Поиск первого символа в столбце PostgreSQL - PullRequest
0 голосов
/ 02 июля 2018

Я хочу найти первый символ в столбце по списку символов (выражение в скобках), но он возвращает все символы столбца, хотя есть клиенты, имена которых начинаются с не букв.

Я использую PostgreSQL.

SELECT name
FROM customs
WHERE name ~* '[a-z]'

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вы также можете обойтись без сопоставления с регулярным выражением и просто сделать:

where name < 'a' or name >= '{'

{ - загадочный символ, который следует за z в таблице ASCII. Примечание. Для этого или любого другого решения вам может потребоваться проверить, учитывается ли сопоставление с учетом регистра.

0 голосов
/ 02 июля 2018

https://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP:

В отличие от LIKE шаблонов, регулярному выражению разрешено совпадать в любом месте строки, если только регулярное выражение явно не привязано к началу или концу строки.

Некоторые примеры:

'abc' ~ 'abc'    <i>true</i>
'abc' ~ '^a'     <i>true</i>
'abc' ~ '(b|d)'  <i>true</i>
'abc' ~ '^(b|c)' <i>false</i>

Так что ваше состояние должно быть

WHERE name ~* '^[a-z]'

, если вы хотите совпадать только в начале name.

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