MySql 使用 like关键字 进行模糊查询,like关键字 通常用在 where条件查询,like关键字 通常配合 %、_、[ ]、[^ ] 使用。
一、%
%表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
1、所查询字段 + like '%深%'
//把含有“深”字的 FName字段 搜索出来
select * from T_OM_Institution where FName like '%深%'
图1
注意:只能查询连续的文字。【比如“深圳市福田区”可以查询,“深圳市区”查询不出来】
2、所查询字段 + like '%深%' and 所查询字段 + like '%福%'
//把含有“深”字、“福”字的 FName字段 搜索出来
select * from T_OM_Institution where FName like '%深%' and FName like '%福%'
图2
注意:此语句没有那么灵活,比较适用于固定的某个文字的查询。
3、所查询字段 + like '%深%福%小%'
//把含有“深”字、“福”字、“小”字的 FName字段 搜索出来
select * from T_OM_Institution where FName like '%深%' and FName like '%深%福%小%'
图3
注意:此语句比较灵活,可以查询相隔几个文字,比较实用。【比如“深圳市福田区小学”可以查询,“深圳市福区小”也可以查询】
二、_
表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
1、查询出中间含有“小”字的FRealName字段(前提:名字三个字)
select * from T_UM_User where FRealName like '_小_'
//只能查询出类似“唐小一”这样的FRealName为三个字且中间一个字为:“小”
图4
2、查询出姓“唐”的姓名(前提:名字三个字)
select * from T_UM_User where FRealName like '唐__'
//唐__:后面有两横杠
//查询出姓“唐”的FRealName,且FRealName的字数必须为3
图5
3、查询名字最后一个字为“西”的姓名(前提:名字三个字)
select * from T_UM_User where FRealName like '__西'
//__西:前面有两横杠
//查询出姓名最后一个字为“西”的姓名,且FRealName的字数必须为3
图6
4-1、查询出姓“文”的姓名(前提:名字两个字)
select * from T_UM_User where FRealName like '文_'
//文_:后面只有一横杠
图7
4-2、查询出姓“唐”的姓名(前提:名字两个字或三个字)
select * from T_UM_User where FRealName like '%唐_%'
//唐_:后面只有一横杠
//查询出来的姓名可以是两个字,也可以是三个字
图8
5-1、查询名字最后一个字为“亮”的姓名(前提:名字两个字)
select * from T_UM_User where FRealName like '_亮'
图9
5-2、查询名字最后一个字为“师”的姓名(前提:名字两个字或三个字)
select * from T_UM_User where FRealName like '%_师%'
//查询出来的姓名可以是两个字,也可以是三个字
图10
三、[ ] -> 语句执行之后没反应
表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
select * from T_UM_User where FRealName like '[付唐]局'
//查询出“付局”,“唐局”(而不是“付唐局”)
四、[^ ] -> 语句执行之后没反应
表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
select * from T_UM_User where FRealName like '[^付唐]局'
//查询出不姓“付”,“唐”的“李局”、“蔡局”等
网友评论