搖曳的薔薇
2019-09-02 08:27:00
我想寫一個SQL查詢,在文本字段中搜索關(guān)鍵字,但只有當(dāng)它是“全字匹配”時(例如,當(dāng)我搜索“rid”時,它不應(yīng)該匹配“arid”,但它應(yīng)該匹配“一個擺脫”。我正在使用MySQL。幸運的是,性能在這個應(yīng)用程序中并不重要,數(shù)據(jù)庫大小和字符串大小都很小,但我更喜歡在SQL中而不是在PHP中驅(qū)動它。
3 回答

白衣染霜花
TA貢獻1796條經(jīng)驗 獲得超10個贊
您可以使用REGEXP和[[:<:]]和[[:>:]]字邊界標(biāo)記:
SELECT *
FROM table
WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'

12345678_0001
TA貢獻1802條經(jīng)驗 獲得超5個贊
找到一個答案來防止經(jīng)典單詞邊界[[::<::]]與特殊字符沖突,例如。@#$%^&*
更換..
SELECT *
FROM table
WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'
有了這個..
SELECT *
FROM table
WHERE keywords REGEXP '([[:blank:][:punct:]]|^)rid([[:blank:][:punct:]]|$)'
后者匹配(空格,制表符等)|| (逗號,括號等)|| 開始/結(jié)束。更“完成”的單詞邊界匹配。

慕娘9325324
TA貢獻1783條經(jīng)驗 獲得超4個贊
您可以使用like通配符標(biāo)記來捕獲可能性(在開始,結(jié)束,中間和單獨),這樣的事情就足夠了:
選擇blah blah blah,像'rid%'這樣的列或像'%rid'這樣的列或像'%rid%'或column ='rid'這樣的列
添加回答
舉報
0/150
提交
取消