Like в PosgreSql
Всем привет! У меня есть столбец в таблице column_1, который содержит текстовые значения. Мне нужно отфильтровать так, чтобы значение не начиналось с цифры, а ещё не начиналось с буквы N. Я попробовала писать разными вариантами:
where column_1 not like 'N%' and column_1 not like '[1-9]%'
where column_1 not like 'N%' and column_1 !~ '[1-9]%'
Но не помогло( Я понимаю, что можно написать код, перебрав через and каждую цифру от 1 до 9. Но уверена, что можно коротким кодом все написать, только как это сделать? Помогите, пожалуйста, разобраться
Ответы (1 шт):
like - это не регулярное выражение. Чтобы через like проверить, является ли первый символ строки числом, вам нужно проверить каждую цифру отдельно:
not (column_1 like '1%'
or column_1 like '2%'
or column_1 like '3%'
or ...)
для поиска совпадения по более гибкому паттерну, в postgresql существуют регулярные выражения (но где символ % уже не означает последовательность любых символов), а так же SQL стандартный SIMILAR TO
(так же со своим синтаксисом, похожим на регулярки, но другим)
column_1 !~ '^[N0-9]' -- регулярным выражением
column_1 not similar to '[N0-9]%' -- для similar to символ % используется аналогично like