mysql模糊查询like与REGEXP的使用详细介绍
前言
在mysql中实现模糊查询的有like和regexp。本文通过实例代码给大家详细介绍这两者的使用方法,下面来跟着小编一起学习学习吧。
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模式也不认识_和%
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
相关推荐
-
MySql like模糊查询通配符使用详细介绍
一.SQL模式 SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作符. SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,%:表示任意个或多个字符.可匹配任意类型和长度的字符. 比如 SELECT * FRO
-
sql语句中like的用法详细解析
在SQL结构化查询语言中,LIKE语句有着至关重要的作用.LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的. 假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者全是字符型数据.现在我们要在姓名字段中查询以"张"字开头的记录,语句如下:select * from table1 where name like &quo
-
mysql模糊查询like和regexp小结
在mysql中实现模糊查询的有like和regexp. ------------------------ like的用法许多人都是知道的,最为常用的情况就是select * from a where name like '%a%'; 其中'%'代表的是任意个字符,它的效果像是正则表达式里的'*',它有几种用法:'a%','%a%','%a',分别表示以什么开头,存在什么以及以什么结尾. 另外也可以使用'_'字符,这表示一个任意字符.效果类似正则表达式里面的'.'. like是对这个字段里面的所有
-
老生常谈MYSQL模式匹配 REGEXP和like的用法
like like要求整个数据都要匹配,而REGEXP只需要部分匹配即可. 也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即可. MySQL提供标准的SQL模式匹配(like),以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式(regexp). SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的
-
mysql模糊查询like与REGEXP的使用详细介绍
前言 在mysql中实现模糊查询的有like和regexp.本文通过实例代码给大家详细介绍这两者的使用方法,下面来跟着小编一起学习学习吧. like模式 like意思是长得像,有两个模式:_和% _表示单个字符,通常用来查询定长的数据,如查出所有姓王的三个字的人名,假设姓名列名为name,注意"王"后面有两个_ select name from 表名 where name like '王__'; %表示0个或多个任意字符,如查出所有姓王的人名 select name from 表名 w
-
MySQL模糊查询用法大全(正则、通配符、内置函数)
SELECT * from table where username like '%陈哈哈%' and hobby like '%牛逼' 这是一条我们在MySQL中常用到的模糊查询方法,通过通配符%来进行匹配,其实,这只是冰山一角,在MySQL中,支持模糊匹配的方法有很多,且各有各的优点.好了,今天让我带大家一起掀起MySQL的小裙子,看一看模糊查询下面还藏着多少鲜为人知的好东西. 一.MySQL通配符模糊查询(%,_) 1-1. 通配符的分类 "%" 百分号通配符: 表示任何字符出现
-
Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. try { realName = new String(realName.getBytes("GBK"), "UTF-8"); } catch (UnsupportedEncodingException exce
-
浅谈MySQL模糊查询中通配符的转义
sql中经常用like进行模糊查询,而模糊查询就要用到百分号"%",下划线"_"这些通配符,其中"%"匹配任意多个字符,"_"匹配单个字符.如果我们想要模糊查询带有通配符的字符串,如"60%","user_name",就需要对通配符进行转义,有两种方式.如下: 1.反斜杠是转义符,通过反斜杠来转义%,使其不再是通配符.这里第一个%是通配符,第二个%不是通配符. select perc
-
深入探究Mysql模糊查询是否区分大小写
前言 近期,一直在忙着写一个小小的个人博客项目,在实现 "全局搜索" 功能时,发现mysql模糊查询语句有点儿神奇(本小白刚刚步入编程阶段,所以可能让大家见笑了,哈哈哈),有时候 mysql模糊查询语句区分大小写,有时候 mysql查询语句又不区分度大小写,于是,做了很多次实验,得出以下结论(可能有不对的地方,欢迎大佬们可以指出我的不足,也欢迎小伙伴们可以一起讨论问题!) 先来介绍一下COLLATE,COLLATE通常是和数据编码(CHARSET)相关的,一般来说每种CHARSET都有
-
解决mysql模糊查询索引失效问题的几种方法
我们在使用like %通配符时常常会引起索引失效的问题. 这里,我们讨论一下like使用%的几种情况: 下列例子用到的索引(VC_STUDENT_NAME) 一.like 'xx%' EXPLAIN select * from t_student where VC_STUDENT_NAME like '王%' 我们发现使用%不放在开头的时候,索引是有效的 二.like '%xx' EXPLAIN select * from t_student where VC_STUDENT_NAME like
-
MySql模糊查询json关键字检索方案示例
目录 前言 方案一: 方案二: 方案三: 方案四(最终采用方案): 总结 前言 最近在项目中遇到这样一个需求:需要在数据表中检索包含指定内容的结果集,该字段的数据类型为text,存储的内容是json格式,具体表结构如下: CREATE TABLE `product` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品名称
-
Mybatis mysql模糊查询方式(CONCAT多个字段)及bug
目录 Mybatis mysql模糊查询及bug 解决方案:一 解决方案:二 mybatis多个字段如何模糊查询一个值 Mybatis mysql模糊查询及bug 先看下如下xml SELECT t.id, t.mobile, t.account_name FROM t_account t WHERE 1=1 <if test="keyWord !=null and keyWord !=''"> and CONCAT(t.id,t.mobile,t.account_name
-
Mysql联合查询UNION和UNION ALL的使用介绍
一.UNION和UNION ALL的作用和语法 UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行.UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同.SQL UNION 语法: 复制代码 代码如下: SELECT column_name FROM table1UNIONSELECT column_name FROM table2 注释:默认地,UNION 操作符选取不同的值.如
随机推荐
- SQL Server 2008 R2数据库镜像部署图文教程
- inputSuggest文本框输入时提示、自动完成效果(邮箱输入自动补全插件)
- Microsoft .Net Remoting系列教程之二:Marshal、Disconnect与生命周期以及跟踪服务
- php中实现用数组妩媚地生成要执行的sql语句
- php上传apk后自动提取apk包信息的使用(示例下载)
- Android中TextView显示插入的图片实现方法
- CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
- Android实现文本排版
- python实现linux服务器批量修改密码并生成execl
- 关于重新组织和重新生成索引sp_RefreshIndex的介绍
- jQuery Validation PlugIn的使用方法详解
- jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
- C/C++函数调用的几种方式总结
- Java 中实现随机无重复数字的方法
- Android实现整理PackageManager获取所有安装程序信息
- PyQt5打开文件对话框QFileDialog实例代码
- Vuejs监听vuex中值的变化的方法示例
- python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
- Python获取航线信息并且制作成图的讲解
- python安装requests库的实例代码