Используя regex В где в Postgres


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

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

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

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

текущее сообщение об ошибке: Ошибка: аргумент WHERE должен быть типа boolean, а не типа text[] Состояние SQL: 42804 Персонаж: 29

2 62

2 ответа:

запись:

select * from table where name ~ 'foo'

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

просто используйте оператор match там:

select * from table where name ~ 'foo';