Использование регулярных выражений в ГДЕ в Postgres - PullRequest
66 голосов
/ 09 февраля 2011

У меня в настоящее время есть следующий запрос:

select regexp_matches(name, 'foo') from table;

Как я могу переписать это так, чтобы регулярное выражение находилось где-то вроде следующего (не работает):

select * from table where regexp_matches(name, 'foo');

Текущее сообщение об ошибке: ОШИБКА: аргумент WHERE должен иметь тип логический, а не тип text [] Состояние SQL: 42804 Персонаж: 29

Ответы [ 2 ]

118 голосов
/ 09 февраля 2011

Вместо этого напишите:

select * from table where name ~ 'foo'

Оператор '~' выдает логический результат для соответствия регулярному выражению или нет, вместо извлечения соответствующих подгрупп.

41 голосов
/ 09 февраля 2011

Просто используйте оператор совпадения там:

select * from table where name ~ 'foo';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...