Самый простой способ - перейти к полному регулярному выражению вместо использования стандарта SQL SIMILAR TO
.
select column1 from tablename where code ~ '[_–-]EST[12][0-9][_-]'
Обратите внимание, что это не обязательно должно соответствовать полной строке, и вам не нужно добавлять.*
на обоих концах (эквивалент %
в LIKE
и SIMILAR TO
).Причина, по которой вы получили совпадение, заключается в том, что из-за подчеркивания _
, который является одним символом подстановки.
Кроме того, я поменял порядок в квадратных скобках, так что тире является последнимперсонаж.Таким образом, он обрабатывается как символьный литерал, а не как спецификатор диапазона.