Регулярные выражения в postgresql - PullRequest
0 голосов
/ 12 января 2011

У меня есть таблица, которая содержит следующие три строки

                     name                     
----------------------------------------------
 user - help center test 4 [120,2010-08-19]
 test - help center test 2 [123,2010-01-19]
 help center test [20109,2010-01-01]
(3 rows)

Теперь мне нужно получить точное соответствие «теста справочного центра», поэтому он должен вернуть 3-й ряд. В основном мне нужно выполнить это точное совпадение, как если бы [20109,2010-01-01] не существует в тесте справочного центра [20109,2010-01-01] , что устраняет скобки и все в скобках. ЗАМЕЧАНИЕ: результат в скобках может быть любым.

Если бы не было скобок, я бы использовал что-то вроде SELECT name FROM clients WHERE lower(name) like '%call center test%' и это дало бы мне результат, но теперь мне нужно сделать то же самое с вышеуказанными результатами? Это возможно?

1 Ответ

1 голос
/ 12 января 2011

Согласно: http://www.postgresql.org/docs/8.1/static/functions-matching.html:

SELECT name FROM clients WHERE name ~* 'help center test \\[.*?\\]'

Просто чтобы уточнить, что ~ * нечувствительно к регистру, поэтому нет необходимости в вызове функции lower () для имени. Это будет соответствовать всем строкам, которые начинаются с «help center test [», затем имеют n символов и, наконец, заканчиваются на «]» (конечно, без двойных кавычек).

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