在带括号的 PostgreSQL 中使用 LIKE

Use of LIKE in PostgreSQL with brackets

我尽量说得具体一些。

目前我使用 MS SQL Server 2012.

一个简化的 table PlanMission 包含这些行

|---------------------|---------------------|
|      Bold_Id        |   MCurrentStates    |
|---------------------|---------------------|
|      10776          |[original[scheme]    |
|---------------------|---------------------|
|      10777          |[operative][inproc]  |
|---------------------|---------------------|
|      10778          |[operative][closed]  | 
|---------------------|---------------------|
|      10779          |[operative][planopen]|
|---------------------|---------------------|

Bold_id 列只是一个唯一的 ID。 列 MCurrentStates 是一个包含状态作为子字符串的 VARCHAR 列。

状态只是一个用方括号包围的字符串,如 [planopen] 因此该列可能为空或有许多状态,如上例。

IN MS SQL 如果我喜欢这样

SELECT  Bold_Id, MCurrentStates 
FROM PlanMission 
WHERE MCurrentStates LIKE '%[planopen]%'

它不起作用。它只是列出了 MCurrentStates 中所有不为空的行。

通过插入解决[]

SELECT  Bold_Id, MCurrentStates 
FROM PlanMission 
WHERE MCurrentStates LIKE '%[[]planopen]%'

效果很好。

现在我想对 PostgreSQL 也这样做。 简单的解决方案是删除括号。

但我的问题是如何使用对 MS SQL 和 PostgreSQL 相同的查询来做到这一点?

尝试:

SELECT  Bold_Id, MCurrentStates 
FROM PlanMission 
WHERE MCurrentStates LIKE '%/[planopen/]%' ESCAPE '/';