2

~*在 SELECT 语句中使用运算符来搜索字符串的一部分。

我遇到问题的地方是一个以 $ 美元符号开头/结尾的特定字符串。

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

如果我删除$它,它应该可以正常工作。但是当我包括它们时,没有结果回来。

需要明确的是,艺术家的名字是字面意思$uicideBoy$,这就是我希望能够根据..匹配的内容。我隐约知道 Postgres“美元报价”,我假设这可能是这里的问题。 ..我只是不确定如何解决它。

4

1 回答 1

0

我要么$用反斜杠转义,只需将其加倍以避免任何正则表达式冲突,或者使用不同的运算符,例如LIKEILIKE(不区分大小写):

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

 foo$$bar$$$$ | ?column? | ?column? 
--------------+----------+----------
 t            | t        | t
(1 Zeile)
于 2020-01-11T13:13:27.203 回答