欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql模糊匹配多個(gè)值的兩種方法實(shí)例

 更新時(shí)間:2022年12月15日 10:48:22   作者:科學(xué)鴻  
我們平時(shí)使用msyql需要模糊的匹配字段的時(shí)候,我們第一反應(yīng)就是使用like查詢語句來模糊匹配,下面這篇文章主要給大家介紹了關(guān)于mysql模糊匹配多個(gè)值的兩種方法,需要的朋友可以參考下

要求:實(shí)現(xiàn)mysql中對(duì)同個(gè)字段進(jìn)行多個(gè)匹配值的模糊查詢

先看數(shù)據(jù)表:

請(qǐng)?zhí)砑訄D片描述

請(qǐng)?zhí)砑訄D片描述

目標(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 

請(qǐng)?zhí)砑訄D片描述

使用regexp操作符來使用正則表達(dá)式:

select * from user u where u.name regexp
( select group_concat(concat('^',fi.family_name) SEPARATOR '|')  from family_info fi )

請(qǐng)?zhí)砑訄D片描述

結(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)文章

最新評(píng)論