Postgresql
Postgresql Regex - 逃避所有格量詞
我有一個用 Java 形成的查詢
SELECT * from COMPONENTS WHERE name ~* = 'searchTerm';
此查詢通過 JDBC 訪問 PostgreSQL 並返回結果。我必須使用
~*
,因為來自 UI 的使用者可能會使用正則表達式搜尋條目。(使用者自己從 UI 傳遞正則表達式,並且所有的安全性都已被處理以防止 SQL 注入)。在使用者搜尋 just 之前,一切正常
C++
。PostgreSQL 返回錯誤:ERROR: invalid regular expression: quantifier operand invalid
在閱讀了許多文章後,我了解到 at
+
就像一個所有格量詞,而 PostgreSQL 不支持它。有沒有辦法可以從輸入字元串中轉義這些字元,或者有更好的方法可以繼續前進嗎?
不要讓使用者輸入正則表達式。精心設計的正則表達式可以永遠佔用 CPU。
如果您只想以不區分大小寫的方式查找子字元串,請使用
ILIKE
:WHERE name ILIKE '%C++%'