Postgresql
Postgresql:以 % 作為搜尋詞的 ILIKE 查詢
我有一個執行 ILIKE 操作的 JDBC 查詢。
select project_name from project_table where project_name ILIKE '%test%';
以上返回與 term 匹配(萬用字元)的所有結果
test
。但是,當 project_name 是
%project_name
並且使用者搜尋 just%
時,查詢會返回所有行,而不僅僅是匹配的行。本質上,查詢變為
select project_name from project_table where project_name ILIKE '%%%';
我了解 postgresql 中萬用字元的概念,但是有沒有辦法限制匹配的結果
%
?
使用反斜杠 ( ) 轉義特殊含義
\
:WHERE project_name ILIKE '%\%project_name';
匹配任何以 ‘%project_name’ 結尾的字元串。
第一個
%
用作萬用字元,第二個轉義\%
匹配文字“%”。或者使用我在此處提供的功能(以及詳細說明):
如果
'%\%%'
像'%%%'
你一樣工作 - 就像 jjanes 暗示的那樣 - 你可能正在使用過時的設置執行standard_conforming_strings = off
,其中\
被解釋為轉義字元。預設是
on
從 Postgres 9.1 開始。(!)**解決方案:**加倍
\
並在字元串前面加上E
,例如:E'%\\%%'
。db<>在這裡擺弄
或者,更確切地說,升級到具有適當設置的 Postgres 的目前版本。看: