這篇文章主要介紹MySQL如何查詢包含的字符串,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)的成都網(wǎng)站建設(shè)公司,我們專(zhuān)注成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、企業(yè)網(wǎng)站建設(shè),外鏈,1元廣告為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
方法:1、利用“表名 where 字段 like '%字符串%'”查詢;2、利用“表名 where find_in_set(字符串,字段)”查詢;3、利用“表名 where locate(字符串,字段)”查詢。
本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
總結(jié)下在MySQL里判斷某個(gè)字符串是否包含某個(gè)字符串的3種方法。
先舉個(gè)簡(jiǎn)單的場(chǎng)景,比如要查詢user表中愛(ài)好中有yanggb的記錄。
方法1:使用通配符%。
通配符也就是模糊匹配,可以分為前導(dǎo)模糊查詢、后導(dǎo)模糊查詢和全導(dǎo)匹配查詢,適用于查詢某個(gè)字符串中是否包含另一個(gè)模糊查詢的場(chǎng)景。
select * from user where hobby like '%yanggb%';
使用的場(chǎng)景局限于找到hobby中存在yanggb的記錄(hobby為多個(gè)以逗號(hào)隔開(kāi)的值),反之不行。
方法2:使用MySQL提供的字符串函數(shù)find_in_set()。
MySQL有提供一個(gè)字符串函數(shù)find_in_set(str1,str2)函數(shù),用于返回str2中str1所在的位置索引,如果找到了,則返回true(1),否則返回false(0),其中str2必須以半角符號(hào)的逗號(hào)【,】分割開(kāi)。
select * from user where find_in_set('yanggb', hobby);
匹配的字符串作為第一參數(shù)時(shí),適用的場(chǎng)景是找到hobby中存在yanggb的記錄(hobby為多個(gè)以逗號(hào)隔開(kāi)的值)。
select * from user where find_in_set(hobby, 'yanggb1,yanggb2,yanggb3');
匹配的字符串作為第二參數(shù)時(shí),適用的場(chǎng)景是找到hobby中有yanggb1、yanggb2和yanggb3其中一個(gè)的記錄(hobby為單個(gè)值)。
方法3:使用MySQL提供的字符串函數(shù)locate()函數(shù)。
MySQL還提供一個(gè)字符串函數(shù)locate(substr,str)函數(shù),用于返回str中substr所在的位置索引,如果找到了,則返回一個(gè)大于0的數(shù),否則返回0。
select * from user where locate('yanggb', hobby) > 0;
適用的場(chǎng)景和find_in_set()函數(shù)差不多,兩個(gè)函數(shù)的區(qū)別大概只有返回值上的不同。
以上是“mysql如何查詢包含的字符串”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!