Postgresql

Postgresql Regex - 逃避所有格量詞

  • November 17, 2020

我有一個用 Java 形成的查詢

SELECT * from COMPONENTS WHERE name ~* = 'searchTerm';

此查詢通過 JDBC 訪問 PostgreSQL 並返回結果。我必須使用~*,因為來自 UI 的使用者可能會使用正則表達式搜尋條目。(使用者自己從 UI 傳遞正則表達式,並且所有的安全性都已被處理以防止 SQL 注入)。

在使用者搜尋 just 之前,一切正常C++。PostgreSQL 返回錯誤:

ERROR:  invalid regular expression: quantifier operand invalid

在閱讀了許多文章後,我了解到 at+就像一個所有格量詞,而 PostgreSQL 不支持它。有沒有辦法可以從輸入字元串中轉義這些字元,或者有更好的方法可以繼續前進嗎?

https://www.regular-expressions.info/possessive.html

不要讓使用者輸入正則表達式。精心設計的正則表達式可以永遠佔用 CPU。

如果您只想以不區分大小寫的方式查找子字元串,請使用ILIKE

WHERE name ILIKE '%C++%'

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