mysql判斷某個字符串是否包含某個字符串的3種方法


總結下在MySQL里判斷某個字符串是否包含某個字符串的3種方法。

先舉個簡單的場景,比如要查詢user表中愛好中有yanggb的記錄。

方法1:使用通配符%。

通配符也就是模糊匹配,可以分為前導模糊查詢、后導模糊查詢和全導匹配查詢,適用於查詢某個字符串中是否包含另一個模糊查詢的場景。

select * from user where hobby like '%yanggb%';

使用的場景局限於找到hobby中存在yanggb的記錄(hobby為多個以逗號隔開的值),反之不行。

方法2:使用MySQL提供的字符串函數find_in_set()。

MySQL有提供一個字符串函數find_in_set(str1,str2)函數,用於返回str2中str1所在的位置索引,如果找到了,則返回true(1),否則返回false(0),其中str2必須以半角符號的逗號【,】分割開。

select * from user where find_in_set('yanggb', hobby);

匹配的字符串作為第一參數時,適用的場景是找到hobby中存在yanggb的記錄(hobby為多個以逗號隔開的值)。

select * from user where find_in_set(hobby, 'yanggb1,yanggb2,yanggb3');

匹配的字符串作為第二參數時,適用的場景是找到hobby中有yanggb1、yanggb2和yanggb3其中一個的記錄(hobby為單個值)。

方法3:使用MySQL提供的字符串函數locate()函數。

MySQL還提供一個字符串函數locate(substr,str)函數,用於返回str中substr所在的位置索引,如果找到了,則返回一個大於0的數,否則返回0。

select * from user where locate('yanggb', hobby) > 0;

適用的場景和find_in_set()函數差不多,兩個函數的區別大概只有返回值上的不同。

 

"人生里的過客那么多,總要習慣送別。"


免責聲明!

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



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