mysql的模糊查询

mysql模糊查询like/REGEXP
(1)like / not like
MySql的like语句中的通配符:百分号、下划线和escape

%:表示任意个或多个字符。可匹配任意类型和长度的字符。
Sql代码
select * from user where username like ‘%huxiao‘;

select * from user where username like ‘huxiao%‘;

select * from user where username like ‘%huxiao%‘;
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件

SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%猫%’

若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’

虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

_:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)

Sql代码
select * from user where username like ‘_‘;

select * from user where username like ‘huxia_‘;

select * from user where username like ‘h_xiao‘;

如果我就真的要查%或者_,怎么办呢?使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用
Sql代码
select username from gg_user where username like ‘%xiao/_%‘ escape ‘/‘;

select username from gg_user where username like ‘%xiao/%%‘ escape ‘/‘; 意思就是说/之后的_不作为通配符

(2)正则表达式

规则如下:

^ 匹配字符串的开始部分

$ 匹配字符串的结束部分

. 匹配任何字符(包括回车和新行)

a* 匹配0或多个a字符的任何序列

a+ 匹配1个或多个a字符的任何序列

a? 匹配0个或1个a字符

de|abc 匹配序列de或abc

(abc)* 匹配序列adc的0个或者多个实例

{n}、{m,n} {n}或{m,n}符号提供了编写正则表达式的更通用方式,能够匹配模式的很多前述原子(或“部分”)。m和n均为整数。

a* 可被写为a{0,}

a+ 可被写为a{1,}

a? 可被写为a{0,1}

[a-dX] 匹配任何是a,b,c,d或者X的字符,两个其他字符之间的’-‘字符构成一个范围

[^a-dX] 匹配任何不是a,b,c,d或者X的字符,前面的字符’^‘是否定的意思

举例如下:
^,匹配字符串开始位置,还是上面的例子,查询所有姓王的人名

select name from 表名 where name regexp ‘^王‘;

$,匹配字符串结束位置,如查询所有姓名末尾是“明”的人名

select name from 表名 where name regexp ‘明$‘;

.,匹配除\n之外的任意单个字符,类似于_,就不写sql语句了

[……],匹配[]中包含的任何一个字符,abcdef……xyz可以简写为[a-z],0123456789简写成[0-9],如查询出w/z/s开头的的人名

select name from 表名 where name regexp ‘^[wzs]‘;

[^……],匹配不包含在[]的字符,如查询出除了w/z/s开头之外的人名

select name from 表名 where name regexp ‘^[^wzs]‘;

a|b|c,匹配a或b或c,如将绩效为A-或A或A+的员工查出来,假设绩效列名performance

select performance from 表名 where performance regexp ‘A-|A|A+‘;
*,重复0次或多次,熟悉javascript正则的同学都知道

‘str*‘可以匹配st/str/strr/strrr……

?,重复0次或1次

‘str?‘可以匹配st/str

原文地址:https://www.cnblogs.com/addauda/p/10304583.html

时间: 2024-10-13 11:28:58

mysql的模糊查询的相关文章

mysql中模糊查询的四种用法介绍

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”.“三脚猫”,“唐三藏”等等有“三”的记录全找出来. 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * FROM [user] WHERE u_name LIKE

MySQL指定模糊查询范围 或 获取或者查询数据库字段的特定几位

SUBSTR 函数 正常的: select * from sky_user WHERE name LIKE "%name%" 现在我需要匹配name的前五位 select * from sky_user WHERE SUBSTR(name,1,5) LIKE "%name%" SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracl

【mysql】模糊查询的使用

1.like/not like 关键字的模糊查询(SQL模式) 基础模板:  SELECT  *  FROM   test  WHERE name LIKE '%你好_'     :匹配       xxxxxxx你好吗 通配符介绍: ①%     表示任意多个字符 ②_      表示一个任意字符 2.regexp/not regexp 关键字的模糊查询(正则模式) 基础模板: SELECT * FROM test WHERE name REGEXP '^ab[cde]fg$'   :匹配  

mybatis中使用mysql的模糊查询字符串拼接(like)

方法一: <!-- 根据hid,hanme,grade,模糊查询医院信息--> <select id="getHospitalLike" resultType="com.hand.hand.domain.Hospital"> SELECT * FROM hospital where hid like '%'||#{selectword}||'%' or hname like '%'||#{selectword}||'%' or grade l

mysql精准模糊查询使用CONCAT加占位符(下划线“_”)的使用,直接限定了长度和格式

比如现在有张表t_user,如下:(表中只是引用某某某的话,并无恶意) id name 1 司马懿 2 司马老贼 3 司马老贼OR司马懿 4 司马大叔 1.模糊查询一般用的模糊查询都是like关键词,然后再在要查的字段中用百分号“%”来查询自己想要的结果.对于上面数据,加入想查询“司马”开头的人 select * from t_user where name “司马%”: 这样查询的结果是把表中所有的数据都会查询出来. 但是,我现在需要查询以司马复姓并且名字中有1个或者两个(或者N个)的名字,显

MySql like模糊查询使用详解

一.SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作符. SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,%:表示任意个或多个字符.可匹配任意类型和长度的字符. 比如 SELECT * FROM [user] WHERE u_name

下面介绍mysql中模糊查询的四种用法:

1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为"张三","张猫三"."三脚猫","唐三藏"等等有"三"的记录全找出来. 另外,如果需要找出u_name中既有"三"又有"猫"的记录,请使用a

MYSQL like 模糊查询 分字查询

1.不分字 SELECT * FROM bgs_group WHERE `name` like "%街道%" 查询包含 “街道”的数据 2.分字 SELECT * FROM bgs_group WHERE `name` like "%街%办%" 查询包含 “街办”两个字的数据,如 长安街道办,注意这种写法主要是顺序,%街%办%顺序包含在 长安街道办中就可以被查询到 原文地址:https://www.cnblogs.com/irobotzz/p/12269887.ht

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办--转自http://www.jb51.net/article/88236.htm

这篇文章主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. ? 1 2 3 4 5 try { realName = new String(realNam