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

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

摘要

内容比较简单,无摘要。

关键词

模糊查询  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},"%")

时间: 2024-08-10 23:32:03

mysql模糊匹配查询like,regexp,in的相关文章

MySQL模糊匹配查询like、regexp、in

MySQL提供标准的SQL模式匹配,以及一种基于像Unix实用程序,如:vi.grep和sed的扩展正则表达式模式匹配的格式 一.SQL模式(% ,_) SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在MySQL中,SQL的模式缺省是忽略大小写的. 注意:在你使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作符. 语法:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中

Excel 中使用SQL 语句查询数据(七)-----用LIKE 运算符进行模糊匹配查询

这篇博文要和大家分享的是用LIKE 运算符进行模糊匹配查询下图数据源商品代号包含数字的数据. 我们用Microsoft query连接数据源,步骤请参考本系列第一篇博文.语句如下图 其中 LIKE '%[0-9]%' 执行结果如下 然后将结果导入excel  的sheet中

Mysql 模糊匹配和转义字符

首先创建一个测试表: insert into test(tt) values('\\\\172.18.28.153'); 现在我想使用模糊匹配,查出以 “\\172” 开头的字符串. 需要使用like 因为"\"是转义字符,所以需要使用4个"\".语句如下: SELECT * from test where tt like '\\\\172%' ; 结果无法得到我想要的数据,按理说这个字符串经过转义后变成“\\172%”应该得到结果才对. 经过多次不同的尝试,最终成

mysql like 匹配查询出不正确中文的解决办法

本文讲述mysql使用like语句时,匹配查询出不正确中文的解决办法 mysql like 搜索的时候发现,用 select title from tb_name where title like '%a%' 的时候出来的结果除了包含a的名字外连包含中文“新”的名字也出现在搜索结果里面,这令我想弄清楚mysql的匹配模式和规则到底是怎么样的,另外在匹配的时候正则表达式也很常用! 出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认

mysql模糊匹配like 之 %

%可以匹配多个字符: select * from user where name like '张%'; 查找出姓名中第一个字是张的所有用户. select * from user where name like '%杰'; 查找出最后一个字是杰的所有用户. select * from user where name like '%丽%': 查找出名字中带丽字的所有用户,比如:张丽,张丽美,丽丽... select * from user where name like '%%'; 查找出所有用户

Mysql 模糊匹配(字符串str中是否包含子字符串substr)

1.LIKE 通常与 % 一同使用,类似于一个元字符的搜索.若substr不在str中,则返回0. SELECT 'test' LIKE '%e%' as `ret`; # 1 SELECT 'test' LIKE '%a%' as `ret`; # 0 2.INSTR(str,substr) 返回字符串 str 中子字符串的第一次出现位置.若substr不在str中,则返回0. SELECT INSTR('test', 't'); # 1 SELECT INSTR('test', 'a');

转:使用Mongo Connector和Elasticsearch实现模糊匹配

原文来自于:http://www.csdn.net/article/2014-09-01/2821485-how-to-perform-fuzzy-matching-with-mongo-connector 摘要:短短两年,Mongo Connector取得了突破性的进展,用户已经可以通过它完成连接器两边的同步更新.而基于这个特性,其他工具针对MongoDB内存储文件的实时操作也成为可能. [编者按]本篇博文作者Luke Lovett是MongoDB公司的Java工程师,他展示了Mongo Co

下拉列表实现模糊匹配选择

最近在做一个在文本框输入关键字, 文本框下动态显示加载相关内容的下拉列表的效果, 就是类似于百度和淘宝搜索框这种效果. 不断的研究加上尝试, 得到两种方案解决这个需求, 特意记录一下, 以免下次用的时候忘记. 方法一: HTML5新增的datalist标签 HTML5作为当下最为热门的 Web 技术, 已经在互联网行业得到了普遍应用, 基于HTML5的浏览器和Web引擎为用户带来了感知体验上的巨大飞跃, 并将Web应用带入了一个新的发展阶段, 可以预见HTML5会有更广泛的使用及更好的发展. H

MySQL常见的查询——2

条件查询:select 查询列表 from 表名 where 筛选条件:分类:一:按条件表达式进行筛选 简单条件运算符:< > = != <> >= <= 二:按照逻辑表达式进行筛选 逻辑运算符:&& || ! and or NOT && and 表示的是:两个都为true的时候,结果才为true || or 表示的是:其中一个结果为true的时候,结果就为true ! not 表示的是:取反三:模糊查询 like BETWEEN in