mysql模糊查询like/REGEXP

原文:mysql模糊查询like/REGEXP

增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,于是模糊查找成了必修课。

like模式

like意思是长得像,有两个模式:_和%

_表示单个字符,通常用来查询定长的数据,如查出所有姓王的三个字的人名,假设姓名列名为name,注意“王”后面有两个_

select name from 表名 where name like '王__';

%表示0个或多个任意字符,如查出所有姓王的人名

select name from 表名 where name like '王%';

查出所有包含“华”字的人名

select name from 表名 where name like '%华%';

 

正则模式 

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

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

+,重复1次或多次

'str+'可以匹配str/strr/strrr/strrrr……

相比javascript里面的正则而言,这里的正则是简化版的,没有惰性匹配/贪婪匹配,[]内不支持\w\s\d这种语法,也不支持中文,相对简单。

需要注意的一点是:这两种模式不要混着用,like模式是不支持正则表达式的,REGEXP模式也不认识_和%

最后顺便说一句,科比昨天退役了,虽然我是林丹球迷,但是科比和林丹打的每一场球我都记得,再见科比,再见青春!

时间: 2024-11-08 20:42:18

mysql模糊查询like/REGEXP的相关文章

mysql模糊查询like和regexp小结_Mysql

在mysql中实现模糊查询的有like和regexp. ------------------------ like的用法许多人都是知道的,最为常用的情况就是select * from a where name like '%a%'; 其中'%'代表的是任意个字符,它的效果像是正则表达式里的'*',它有几种用法:'a%','%a%','%a',分别表示以什么开头,存在什么以及以什么结尾. 另外也可以使用'_'字符,这表示一个任意字符.效果类似正则表达式里面的'.'. like是对这个字段里面的所有

服务器-hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到

问题描述 hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到 用hibernate做模糊查询,页面传递参数也处理了乱码 @Action(value="searchNameByad") public String searchNameByad()throws Exception{ System.out.println("android发送请求获取的参数是:"+buildingname); //解决乱码问题 String bn = new Str

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办_java

项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. try { realName = new String(realName.getBytes("GBK"), "UTF-8"); } catch (UnsupportedEncodingException exce

mysql模糊查询

mysql模糊查询 双引号中出现的变量将自动被解析. $sql = "SELECT * FROM oneself WHERE name like '%{$colname_Recordset1}' LIMIT {$startRow_Recordset1}, {$maxRows_Recordset1}"; $Recordset1 = mysql_qu 双引号中出现的变量将自动被解析. $sql = "SELECT * FROM oneself WHERE name like '%

mysql 模糊查询

mysql> SELECT * FROM pet WHERE name LIKE "b%"; 为了找出以"fy"结尾的名字: mysql> SELECT * FROM pet WHERE name LIKE "%fy"; 为了找出包含一个"w"的名字: mysql> SELECT * FROM pet WHERE name LIKE "%w%"; 为了找出包含正好5个字符的名字,使用&qu

浅谈MySQL模糊查询中通配符的转义_Mysql

sql中经常用like进行模糊查询,而模糊查询就要用到百分号"%",下划线"_"这些通配符,其中"%"匹配任意多个字符,"_"匹配单个字符.如果我们想要模糊查询带有通配符的字符串,如"60%","user_name",就需要对通配符进行转义,有两种方式.如下:   1.反斜杠是转义符,通过反斜杠来转义%,使其不再是通配符.这里第一个%是通配符,第二个%不是通配符. select perc

mysql 用like模糊查询 怎么查包含了%号的字符串

问题描述 mysql 用like模糊查询 怎么查包含了%号的字符串 如题 select * from table where column like '%%%'中间的百分号怎么写 解决方案 like '%%%'就可以了 解决方案二: MySQL模糊查询likemysql中文like模糊查询问题模糊查询like 解决方案三: 如果我就真的要查%或者_,怎么办呢?使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用 Sql代码 select usern

PHP MYSQL实现登陆和模糊查询两大功能_php技巧

本文使用的软件版本如下:PHP版本 5.5.12:MYSQL版本 5.6.17:Apache 2.4.9 用的wampserver一.PHPMYSQL实现登陆 一共含有两个文件:login.php和logincheck.php;表单代码: <form action="logincheck.php"method="post"> Yonghu:<inputtype="text" name="username" /

mysql正则匹配模糊查询的例子

MySQL仅支持多数正则表达式实现的一个很小的子集. ---------------------- 9.2.1  基本字符匹配 REGEXP后所跟的东西作为正则表达式处理.   SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name; ------返回------ +------------------------+ |    prod_name    | +-----------------