mysql語句中判斷是否包含某字符串的方法


當我們需要對數據做篩選和查詢的時候,往往會涉及到一些限制條件的判斷,今天就分享一個判斷字符串的技巧。

like

相信大家對like的用法肯定都很熟悉了,它可以匹配字段以某字符串開始,以某字符串結尾,包含有某字符串,用法如下:like '%string',like 'string%',like '%string%'

find_in_set

現在我們遇到這樣一個需求,字段里面的值是這樣的,(1,2,3,4),(12,14),(3,5,11,12),(22,25,28,29),然后需要判斷字段里面是否有2這個值,如果我們使用like的話,肯定是得不到正確的結果(如果不信,可以用like去驗證一下)

這里我們來了解一下find_in_set,它是一個mysql字符串函數,用它就可以完美解決上面的問題,用法如下:find_in_set(2, 字段名稱) = 0表示該字段不含有2,find_in_set(2, 字段名稱) >= 1表示該字段含有2,舉個例子:

SELECT find_in_set('2',  '1,2,3,4,5') as test;
-> 2
 SELECT find_in_set('2', '12,23,26,29') as test;
-> 0

locate

它也是一個mysql字符串函數,方法如下:locate(單個字符串, 字段名稱),和find_in_set用法相似,那它倆有沒有區別的呢,看如下例子:

執行sql語句:

SELECT find_in_set('13', '3,6,13,24,33,36') as test;

-> 3
SELECT locate('13', '3,6,13,24,33,36') as test;

-> 5

這下知道區別了吧!

理解了它們的用法和區別,在實際的項目的過程中就可以靈活使用咯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM