Я стараюсь быть настолько конкретным, насколько это возможно.
В настоящее время я использую 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?