Использование LIKE в PostgreSQL со скобками - PullRequest
0 голосов
/ 07 мая 2018

Я стараюсь быть настолько конкретным, насколько это возможно.

В настоящее время я использую MS SQL Server 2012.

Упрощенная таблица PlanMission содержит эти строки

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

Столбец Bold_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?

1 Ответ

0 голосов
/ 07 мая 2018

Попробуйте:

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