Postgresql

Postgresql:以 % 作為搜尋詞的 ILIKE 查詢

  • January 7, 2022

我有一個執行 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 的目前版本。看:

引用自:https://dba.stackexchange.com/questions/305716