我尽量做到如此具体。
目前我使用MS SQL Server 2012。
简化表PlanMission包含这些行
|---------------------|---------------------|
| Bold_Id | MCurrentStates |
|---------------------|---------------------|
| 10776 |[original[scheme] |
|---------------------|---------------------|
| 10777 |[operative][inproc] |
|---------------------|---------------------|
| 10778 |[operative][closed] |
|---------------------|---------------------|
| 10779 |[operative][planopen]|
|---------------------|---------------------|
Bold_id列只是一个唯一的ID。 MCurrentStates列是一个包含状态作为子字符串的VARCHAR列。
状态只是一个被括号括起来的字符串,如[planopen] 因此,该列可能为空或具有许多状态,如上例所示。
在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相同的查询来完成此操作?
答案 0 :(得分:3)
尝试:
SELECT Bold_Id, MCurrentStates
FROM PlanMission
WHERE MCurrentStates LIKE '%/[planopen/]%' ESCAPE '/';