Mysql 精確查詢是否字段中包含某個字符串


想到是否包含,就想起來in,like查詢了,先說一下這倆的區別,這是表字段和數據

Like查詢

首先可能用的最多的LIKE 模糊查詢,這樣的數據不太精確,如果姓名有 “西貝小小鳳1,西貝小小鳳2” 這樣的也會查出來,數據不太准確

select * from table where field like '%西貝小小鳳%'

查詢結果

 

 

 

 

 

 總結:Like模糊查詢,對字符沒有特殊限制,但是查詢不精確

IN查詢  

select * from table where field in('西貝小小鳳','西貝','小小鳳')

 查詢結果:

 

 

 總結:in查詢,必須完全匹配,字段里面包含字符串也不可以

find_in_set查詢

最后大佬出馬,find_in_set,這個比較特殊,數據庫保存的格式必須是以","分割的,查詢比較精確

 

 

 

 

總結:find_in_set 是精確查詢,字段值以英文”,”分隔

 

我最近用哪個UNION ALL多個表連接查詢數據,發現在每條sql里面寫find_in_set不管用,最后發現需要這么寫才行

select * from (
    select a.`id` id,a.`power` power from table1 a  
    UNION ALL
    select b.`id` id,b.`power` power  from table2 b  
    UNION ALL
    select c.`id` id,c.`power` power  from table3 c  
) t WHERE find_in_set('西貝小小鳳', t.power);

 

要這么用哈,總覺得自己會MySQL,但是很多東西好像都不會啊啊啊啊啊啊,生活的變數太多,珍惜現在!!

 


免責聲明!

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



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