當我們需要對數據做篩選和查詢的時候,往往會涉及到一些限制條件的判斷,今天就分享一個判斷字符串的技巧。
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
這下知道區別了吧!
理解了它們的用法和區別,在實際的項目的過程中就可以靈活使用咯。