ПОХОЖИЕ НА Функция postgresql не работает должным образом - PullRequest
0 голосов
/ 22 октября 2018

Я использую приведенный ниже код для расчета

select column1 from tablename  where code  SIMILAR TO '%(-|_|–)EST[1-2][0-9](-|_)%'

для значения этого столбца -CSEST190-KCY18-04-01-L условие выполнено, но в действительности я хочу игнорировать этот тип данных,Правильное значение, которое должно пройти через указанное выше условие:

-CS-EST19-0-KCY18-04-01-L
-CS_EST19-0-KCY18-04-01-L

Есть предложения, как избежать такого рода путаницы?

1 Ответ

0 голосов
/ 22 октября 2018

Самый простой способ - перейти к полному регулярному выражению вместо использования стандарта SQL SIMILAR TO.

select column1 from tablename  where code ~ '[_–-]EST[12][0-9][_-]'

Обратите внимание, что это не обязательно должно соответствовать полной строке, и вам не нужно добавлять.* на обоих концах (эквивалент % в LIKE и SIMILAR TO).Причина, по которой вы получили совпадение, заключается в том, что из-за подчеркивания _, который является одним символом подстановки.

Кроме того, я поменял порядок в квадратных скобках, так что тире является последнимперсонаж.Таким образом, он обрабатывается как символьный литерал, а не как спецификатор диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...