[英]Regexp to match Javascript string literals with a specific keyword using Java
[英]Escaping String literals in REGEXP with MySQL
這里有一個棘手的問題。
可以說我有表“ books”,其中有“ title”列。 我有一排帶有'title'='MyBook'的行。
我想使用REGEXP搜索書名,並且想將所有可搜索的字符串都引用為文字序列:
SELECT * FROM books WHERE title REGEXP '\\QMyBook\\E';
當我使用mariaDB時,我的查詢工作正常。 DB會識別此引號。 但是,當我使用純MySql時,此查詢不返回任何內容。 問題不在於反斜杠,我認為MySql在使用“ \\ Q”和“ \\ E”時遇到麻煩。 也許有一種方法可以實現我的目標,但是我真的不想分開逃避每個角色。
我從Java執行此查詢。 但是從控制台進行普通查詢的方式相同
問題是-由於某些原因,確實有必要使用REGEXP(而不是LIKE)運算符。
但是我不希望帶有正則表達式特殊字符(例如“ My.ook”)的查詢在這里起作用。 我需要任何帶有或不帶有正則表達式特殊符號的字符串,都由mysql作為原義序列處理(如果我們傳遞“點”,我們正在尋找“點”,而不是“任何字符”)
我認為普通的MySQL無法做到這一點,但是如果您升級到MariaDB,則可以使用所需的語法。
請參閱MariaDB的文檔以獲取更多信息: https : //mariadb.com/kb/en/mariadb/pcre/#quoting
SELECT * FROM books WHERE title REGEXP '\\QMyBook\\E';
我建議切換到MariaDB的原因如下:
此列表並不詳盡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.