Как использовать Postgres совпадение регулярного выражения в строке со знаками доллара? - PullRequest
2 голосов
/ 10 января 2020

Я использую оператор ~* в операторе SELECT для поиска частей строки.

У меня возникают проблемы с конкретной строкой, которая начинается / заканчивается знаком $ долларов .

SELECT "artists".* FROM "artists" WHERE (name ~* '$uicideBoy$')

Если я уберу $, он будет работать как надо. Но когда я включаю их, результаты не возвращаются.

Чтобы быть ясным, имя художника буквально $uicideBoy$, и это то, что я хочу, чтобы иметь возможность ~ * соответствовать на основе ... Я смутно известно о Postgres "котировке доллара", которая, как я предполагаю, может быть причиной проблемы здесь ... Я просто не знаю, как ее решить.

1 Ответ

0 голосов
/ 11 января 2020

Я бы либо экранировал $ с обратной косой чертой sh, просто удвоил его, чтобы избежать конфликта регулярных выражений, либо использовал бы другой оператор, например LIKE или ILIKE (без учета регистра) ):

SELECT 
  '$fOO$Bar$' ~* $$$$foo$$bar$$$$,
  '$fOO$Bar$' ~* '\$foo\$bar\$',
  '$fOO$Bar$' ILIKE '%$foo$bar$%';

 foo$$bar$$$$ | ?column? | ?column? 
--------------+----------+----------
 t            | t        | t
(1 Zeile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...