我有一個創建查詢的搜索函數。我的目標是搜索確切的單詞,所以如果短語是'hello',它應該只返回'hello'的結果(而不是'xhello','helloxx'等)。我的代碼如下所示:SQL正則表達式中的特殊字符 - 與特殊字符匹配字邊界
SELECT (...) WHERE x RLIKE '[[:<:]]word[[:>:]]'
而且它適用於大多數的情況下,但是當這句話是F.E. 問題開始'$ hello'或'hello'等 - 特殊字符破壞了功能。
有沒有辦法處理它?
我有一個創建查詢的搜索函數。我的目標是搜索確切的單詞,所以如果短語是'hello',它應該只返回'hello'的結果(而不是'xhello','helloxx'等)。我的代碼如下所示:SQL正則表達式中的特殊字符 - 與特殊字符匹配字邊界
SELECT (...) WHERE x RLIKE '[[:<:]]word[[:>:]]'
而且它適用於大多數的情況下,但是當這句話是F.E. 問題開始'$ hello'或'hello'等 - 特殊字符破壞了功能。
有沒有辦法處理它?
嘗試
SELECT * FROM table WHERE x RLIKE '(^|[[:space:]])Hello([[:space:]]|$)'
或
SELECT * FROM table WHERE x RLIKE '(^|)Hello(|$)'
或
SELECT * FROM table WHERE x REGEXP '(^|[[:space:]])Hello([[:space:]]|$)'
或
SELECT * FROM test WHERE name REGEXP '(^|)Hello(|$)'
OP已經聲明那些[「不工作」](http://stackoverflow.com/questions/38739216/special-chars-in-sql-regex#comment64853436_38739216)。 –
rlike和正則表達式之間的區別是什麼? – user6671488
兩者都是一樣的。請參閱[正則表達式](http://dev.mysql.com/doc/refman/5.7/en/regexp.html) – zakhefron
您可以檢查這個詞的應用耳朵在字符串的開始/結尾,如果它被空格包圍:'RLIKE'(^ | [[:space:]])字([[:space:]] | $)'' –
Wiktor - 不工作 – user6671488
它怎麼不「工作」?請參閱https://regex101.com/r/dX5aV9/1。這是工作*。 –