在带括号的 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 '/';
我尽量说得具体一些。
目前我使用 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 '/';