mysql模糊匹配多個值的兩種方法實例
要求:實現(xiàn)mysql中對同個字段進(jìn)行多個匹配值的模糊查詢
先看數(shù)據(jù)表:
目標(biāo)是在user表中,匹配出姓氏在family_info表中的記錄。
方法一:將like作為連接條件
將查詢表與需要匹配的多個值(可以是表或select子句結(jié)果)進(jìn)行左連接,以字段使用like模糊匹配作為連接條件,再對連接結(jié)果進(jìn)行非空過濾。
先看like模糊匹配作為連接條件的結(jié)果:
select u.*,fi.* from `user` u left join family_info fi on u.name like concat(fi.family_name, '%')
能看到,沒有對應(yīng)匹配值的數(shù)據(jù)在查詢中,family_name字段結(jié)果是null,此時再把語句進(jìn)行調(diào)整,將匹配后family_name為null值的數(shù)據(jù)進(jìn)行過濾,得到所需要的查詢語句:
select u.* from `user` u left join family_info fi on u.name like concat(fi.family_name, '%') where fi.family_name is not null
能得到姓名為“張”、“王”開頭的記錄。
方法二:正則表達(dá)式搭配group_concat函數(shù)
使用group_concat函數(shù)來生成任意字符串左匹配的正則表達(dá)式字符串:
select group_concat(concat('^',fi.family_name) SEPARATOR '|') from family_info fi
使用regexp操作符來使用正則表達(dá)式:
select * from user u where u.name regexp ( select group_concat(concat('^',fi.family_name) SEPARATOR '|') from family_info fi )
結(jié)果是查詢出了姓名為“張”、“王”開頭的記錄。
示例表的表語句:
CREATE TABLE `user` ( `name` varchar(32) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年齡' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表' INSERT INTO `user` (name,age) VALUES ('張三',21), ('李四',22), ('王五',23), ('張六',24), ('李七',25), ('王八',26); CREATE TABLE `family_info` ( `family_name` varchar(32) DEFAULT NULL COMMENT '姓氏' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='姓氏表' INSERT INTO family_info (family_name) VALUES ('張'), ('王');
總結(jié)
到此這篇關(guān)于mysql模糊匹配多個值的文章就介紹到這了,更多相關(guān)mysql模糊匹配多個值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫遠(yuǎn)程訪問權(quán)限設(shè)置方式
這篇文章主要介紹了MySQL數(shù)據(jù)庫遠(yuǎn)程訪問權(quán)限設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04mysql索引過長Specialed key was too long的解決方法
在創(chuàng)建要給表的時候遇到一個有意思的問題,提示Specified key was too long; max key length is 767 bytes,本文就來介紹一下解決方法,如果你也遇到此類問題,可以參考一下2021-11-11MySQL 5.7.14 net start mysql 服務(wù)無法啟動-“NET HELPMSG 3534” 的奇怪問題
這篇文章主要介紹了MySQL 5.7.14 net start mysql 服務(wù)無法啟動-“NET HELPMSG 3534” 的奇怪問題,需要的朋友可以參考下2016-12-12mysql忘記root密碼的解決辦法(針對不同mysql版本)
這篇文章主要介紹了mysql忘記root密碼的解決辦法(針對不同mysql版本),文章通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06MySQL 數(shù)據(jù)庫定時備份的幾種方式(全面)
在操作數(shù)據(jù)過程中,可能會導(dǎo)致數(shù)據(jù)錯誤,甚至數(shù)據(jù)庫奔潰,而有效的定時備份能很好地保護(hù)數(shù)據(jù)庫。本篇文章主要講述了幾種方法進(jìn)行 MySQL 定時備份數(shù)據(jù)庫。2021-09-09