Как работать с первым элементом массива?

#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.