#sql #regex #postgresql
#sql #регулярное выражение #postgresql
Вопрос:
ВЫБЕРИТЕ regexp_matches(‘abc’, ‘[0-9]*’);
Приведенный выше запрос возвращает text[]
и нужно проверить, нашел ли он какие-либо (мне все равно какие) совпадения или ни одного.
Итак, в случае, приведенном выше, я получаю {""}
, как я могу получить «логическое» значение, которое сообщает мне, соответствует ли оно чему-то или ничему?
Кажется, это не работает:
ВЫБЕРИТЕ regexp_matches(‘abc’, ‘[0-9]*’) = ‘{}’;
Ответ №1:
Используйте ~
оператор:
SELECT 'abc' ~ '[0-9]*';
В качестве альтернативы, вы могли бы извлечь первый элемент следующим образом:
SELECT (regexp_matches('abc', '[0-9]*'))[1] = ''; -- True if it didn't match
Обратите внимание на дополнительные круглые скобки и на то, что массив индексируется, начиная с 1.