mysql模糊匹配多個(gè)值的兩種方法實(shí)例
要求:實(shí)現(xiàn)mysql中對(duì)同個(gè)字段進(jìn)行多個(gè)匹配值的模糊查詢
先看數(shù)據(jù)表:
目標(biāo)是在user表中,匹配出姓氏在family_info表中的記錄。
方法一:將like作為連接條件
將查詢表與需要匹配的多個(gè)值(可以是表或select子句結(jié)果)進(jìn)行左連接,以字段使用like模糊匹配作為連接條件,再對(duì)連接結(jié)果進(jìn)行非空過濾。
先看like模糊匹配作為連接條件的結(jié)果:
select u.*,fi.* from `user` u left join family_info fi on u.name like concat(fi.family_name, '%')
能看到,沒有對(duì)應(yīng)匹配值的數(shù)據(jù)在查詢中,family_name字段結(jié)果是null,此時(shí)再把語句進(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模糊匹配多個(gè)值的文章就介紹到這了,更多相關(guān)mysql模糊匹配多個(gè)值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪問權(quán)限設(shè)置方式
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪問權(quán)限設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04mysql索引過長(zhǎng)Specialed key was too long的解決方法
在創(chuàng)建要給表的時(shí)候遇到一個(gè)有意思的問題,提示Specified key was too long; max key length is 767 bytes,本文就來介紹一下解決方法,如果你也遇到此類問題,可以參考一下2021-11-11MySQL 5.7.14 net start mysql 服務(wù)無法啟動(dòng)-“NET HELPMSG 3534” 的奇怪問題
這篇文章主要介紹了MySQL 5.7.14 net start mysql 服務(wù)無法啟動(dòng)-“NET HELPMSG 3534” 的奇怪問題,需要的朋友可以參考下2016-12-12mysql忘記root密碼的解決辦法(針對(duì)不同mysql版本)
這篇文章主要介紹了mysql忘記root密碼的解決辦法(針對(duì)不同mysql版本),文章通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06MySQL 數(shù)據(jù)庫(kù)定時(shí)備份的幾種方式(全面)
在操作數(shù)據(jù)過程中,可能會(huì)導(dǎo)致數(shù)據(jù)錯(cuò)誤,甚至數(shù)據(jù)庫(kù)奔潰,而有效的定時(shí)備份能很好地保護(hù)數(shù)據(jù)庫(kù)。本篇文章主要講述了幾種方法進(jìn)行 MySQL 定時(shí)備份數(shù)據(jù)庫(kù)。2021-09-09