MySQL模糊查询:LIKE模式和REGEXP模式

转载 2015年11月18日 13:38:44

转自:http://www.linuxidc.com/Linux/2015-03/114580.htm

MySQL模糊查询提供了两种模式:LIKE模式和REGEXP模式。

LIKE模式

LIKE模式是使用的LIKE 或 NOT LIKE 比较运算符进行模糊查询。

SELECT 字段 FROMWHERE 字段 LIKE[NOT LIKE] '条件'

针对条件,有以下几种通配符:

通配符 含义
% 表示任意一个或多个字符,可匹配任意类型和长度的字符
_ 表示任意单个字符,匹配单个任意字符
ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。

 示例:

# 从 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人
SELECT * FROM Persons WHERE City LIKE 'Ne%'
# 从 "Persons" 表中选取居住在包含 "lond" 的城市里的人
SELECT * FROM Persons WHERE City LIKE '%lond%'
# 从 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人
SELECT * FROM Persons WHERE FirstName LIKE '_eorge'
# 从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er"
SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'
# 从 "KPI" 表中查找计算过程中含有0%的指标
SELECT * FROM KPI WHERE COUNT_PROCESS LIKE '%0/%%' ESCAPE '/'

注意:

  1. 通配符必须与 LIKE 运算符一起使用
  2. 如果没有使用通配符,LIKE与=是等价的

REGEXP模式

REGEXP模式是使用 REGEXP 操作符来进行正则表达式匹配查询。

SELECT 字段 FROMWHERE 字段 REGEXP '条件'

针对条件,有以下几种通配符:

通配符 含义
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
[...] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^...] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

示例:

# 查找name字段中以'st'为开头的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP '^st';
# 查找name字段中以'ok'为结尾的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
# 查找name字段中包含'mar'字符串的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP 'mar';
# 查找name字段中以元音字符开头且以'ok'字符串结尾的所有数据:
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$'

MySQL的正则表达式?LIKE和REGEXP的区别?

MySQL的正则表达式?LIKE和REGEXP的区别? 1. Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 例如:select * from wp_posts whe...
  • qw_xingzhe
  • qw_xingzhe
  • 2017年07月30日 08:29
  • 710

Mysql模糊查询like效率,以及更高效的写法

在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就...
  • luojishan1
  • luojishan1
  • 2017年06月21日 12:44
  • 7547

MySql模糊查询like通配符使用详细介绍

%代表任意多个字符  _代表一个字符 在 MySQL中,SQL的模式缺省是忽略大小写的 正则模式使用REGEXP和NOT REGEXP操作符。 “.”匹配任何单个的字符。一个字符类 “[...]...
  • my2010Sam
  • my2010Sam
  • 2014年02月12日 10:19
  • 119147

Mysql模糊查询like效率,以及更高效的写法 在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时

Mysql模糊查询like效率,以及更高效的写法 在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百...
  • forest_fire
  • forest_fire
  • 2017年06月23日 09:59
  • 1308

模糊查询的一种比MySQL的like更好的搜索引擎

有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询 Solr从数据库中读取数据并创建索引速度 一次性创建索引 在JVM内...
  • u013703963
  • u013703963
  • 2017年01月02日 16:23
  • 1262

MySQL模糊搜索优化

InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进...
  • panjican
  • panjican
  • 2016年09月13日 11:21
  • 4549

mysql中的模糊查询

原文链接:http://www.cnblogs.com/cyttina/p/3894428.html 1.  参数中直接加入%%   param.setUsername("%CD%");     ...
  • yanguo110
  • yanguo110
  • 2017年08月03日 20:15
  • 359

Mysql| 使用通配符进行模糊查询(like,%,_)

通配符的分类: %百分号通配符: 表示任何字符出现任意次数(可以是0次). _下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.like操作符: LIKE作用是指示mysql后面...
  • u011479200
  • u011479200
  • 2017年11月12日 18:39
  • 173

MySql模糊查询like通配符与使用正则查询详细介绍

MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。 一、SQL模式 SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%...
  • aa249856445
  • aa249856445
  • 2016年11月08日 10:49
  • 1533

MySQL简单实现多字段模糊查询

我所做的商城项目前些时提了新需求,要求前台搜索商品除了能通过商品名称搜索到以外,还可以通过别个信息搜索,比如:商品编号、详情内容描述等等,类似于全文搜索了。我首先想到的就是lucene,但是对代码这样...
  • yaoyao9565
  • yaoyao9565
  • 2016年05月03日 16:40
  • 14365
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL模糊查询:LIKE模式和REGEXP模式
举报原因:
原因补充:

(最多只允许输入30个字)