当前位置:Gxlcms > 数据库问题 > mysql模糊匹配查询like,regexp,in

mysql模糊匹配查询like,regexp,in

时间:2021-07-01 10:21:17 帮助过:16人阅读

 

摘要

内容比较简单,无摘要。  

关键词

模糊查询  like  regexp  in  contact

 

正文

下图是示例用到的数据表信息 技术分享

 

MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式

 

一、SQL模式

SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。 注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。 语法:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了两种种匹配模式:   1. 百分号(%):示任意个或多个字符,可匹配任意类型和长度的字符。   示例1:SELECT * FROM character WHERE name LIKE ‘%孙%‘;即匹配e姓名为“孙行者”,“行者孙,“行者孙”三行数据   示例2:SELECT * FROM character WHERE name LIke ‘%孙%‘ and name like ‘%行%‘; 即匹配姓名为“孙行者”,“行者孙,“行者孙”三行数据   示例3:SELECT * FROM character WHERE name LIke ‘%孙%行%‘;只能匹配姓名为“孙行者”一行数据   注意示例2和示例3的区别   2.下划线(_):表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)   示例1:SELECT * FROM character WHERE name LIKE ‘_三_‘;即把姓名为“唐三藏”的一行数据   示例2:SELECT * FROM character WHERE name LIKE ‘_三‘;即把姓名为“唐三”一行数据  

二、正则模式

由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词),以下是正则表达式中常用的字符   1. “.”匹配任何单个的字符(单字节字符)。一个字符类“[...]”匹配在方括号内的任何字符。   示例1::“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。   2. “ * ”匹配零个或多个在它前面的东西。   示例:“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。   3. 注意:正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。   4. “^”匹配名字的开始   示例:姓名以“孙”开始的 SELECT * FROM role WHERE name REGEXP "^孙";;即匹配姓名为“孙行者”,“孙悟空两行数据   5. 使用“$”匹配名字的结尾   示例:示例:姓名以“孙”结尾的 SELECT * FROM role WHERE name REGEXP "孙$";;即匹配姓名为“者行孙”,“行者孙”两行数据  

三、in查询

叫in查询不是很合理 ,更合理的说法是 :in其实和=类似,区别在于:=后面是一个值。in 后面可以是多个值。   示例1:select * from role where name in("唐三");即匹配姓名为“唐三”一行数据;   示例2:select * from role where name in("唐三","唐三藏");即匹配姓名为“唐三”,“唐三藏”一行数据;   示例3:select * from role where name in("唐三","%行者%"),只匹配姓名为“唐三”一行数据;即in查询不支持模糊查询,如示例4   示例4:select * from role where name in("%行者%"),无匹配结果  

四、like contact模糊查询

CONCAT(str1,str2,…) 函数返回结果为连接参数产生的字符串。   示例1:select * from role where name like contact("%","三","%");即匹配姓名为“唐三”,“唐三藏”两行行数据; like contact模糊查询强大的地方在于可以对传进来的参数进行某查询,比如经前端提交上的数据,赋值给参数name,则可以select * from table where name like contact("%",${name},"%")

mysql模糊匹配查询like,regexp,in

标签:and   abc   字符   sel   测试   concat   模糊   示例   行数据   

人气教程排行