mysql---使用正则表达式搜索
2017-06-12 15:36
218 查看
mysql仅仅支持正则表达式的一个很小的子集
这个例子可以用LIKE来完成,方法如下所示:
LIKE和REGEXP的区别
执行两条语句,第一条不返回数据,第二条返回一条
LIKE要匹配的是整个行,第一个语句只能匹配到列中内容只有’1000’的数据行,而REGEXP只要列中有内容就可以匹配到
区分大小写
mysql中正则表达式匹配不区分大小写,为区分大小写,可以使用BINARY关键字,如WHERE prob_name REGEXP BINARY ‘JetPack .000’
匹配1或2或3 Ton,Ton没有指定大小写,大小写都可以匹配到
除此之外还可以匹配出指定字符之外的任何东西。使用[^123]匹配除这些字符外的任何东西。
[a-z] 匹配任意一个字母
^的双重用途
- 在集合中(用[]定义),用^来否定该集合
- 匹配字符串的开始处
使用REGEXP起类似LIKE的作用
LIKE和REGEXP的不同在于,LIKE匹配整个字符串,而REGEXP匹配子串,利用定位符,通过用^开始每个表达式,用$结束每个表达式,可以使得REGEXP的作用与LIKE一样。
1. 基本字符匹配
检索prob_name包含文本四位数字且数字末尾是’000’的所有行SELECT prob_name FROM products WHERE prob_name REGEXP '.000' ORDER BY prob_name;
这个例子可以用LIKE来完成,方法如下所示:
SELECT prod_name FROM products WHERE prod_name LIKE '%000%' ORDER BY prod_name;
LIKE和REGEXP的区别
SELECT prob_name FROM products WHERE prob_name LIKE '1000' ORDER BY prob_name;
SELECT prob_name FROM products WHERE prob_name REGEXP '1000' ORDER BY prob_name;
执行两条语句,第一条不返回数据,第二条返回一条
LIKE要匹配的是整个行,第一个语句只能匹配到列中内容只有’1000’的数据行,而REGEXP只要列中有内容就可以匹配到
区分大小写
mysql中正则表达式匹配不区分大小写,为区分大小写,可以使用BINARY关键字,如WHERE prob_name REGEXP BINARY ‘JetPack .000’
2. 进行OR匹配
SELECT prob_name FROM products WHERE prob_name REGEXP '1000|2000' ORDER BY prod_name;
3. 匹配几个字符之一
使用’[]’来匹配特定字符,选取方括号内的任意一个字符参与匹配。SELECT prob_name FROM products WHERE prob_name REGEXP '[123] Ton' ORDER BY prob_name;
匹配1或2或3 Ton,Ton没有指定大小写,大小写都可以匹配到
除此之外还可以匹配出指定字符之外的任何东西。使用[^123]匹配除这些字符外的任何东西。
3. 匹配范围
[0-9] 匹配任意一个数字[a-z] 匹配任意一个字母
4. 匹配特殊字符
匹配特殊字符,必须用\\作为前缀。为了匹配
\需要使用
\\\``\`也可以用来引用元字符
元字符 | 说明 |
---|---|
\\f | 换页 |
\\n | 换行 |
\\r | 回车 |
\\t | 制表 |
\\v | 纵向制表 |
5. 匹配字符类
类 | 说明 |
---|---|
[:alnum:] | 任意字母和数字(同[a-zA-Z0-9]) |
[:alpha:] | 任意字符(同[a-zA-Z]) |
[:blank:] | 空格和制表(同[\\t]) |
[:cntrl:] | ASCII控制字符(ASCII 0到31和127) |
[:digit:] | 任意数字同[0-9]) |
[:graph:] | 与[:print:]相同,但不包括空格 |
[:lower:] | 任意小写字母 |
[:print:] | 任意可以打印的字符 |
[:punct:] | 既不在[:alnum:]又不在 [:contrl:]中的任意字符 |
[:space:] | 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v]) |
[:upper:] | 任意大写字母 |
[:xdigit:] | 任意十六进制数字 |
6. 匹配多个实例
使用重复元字符可以对匹配的数目进行更强的控制元字符 | 说明 |
---|---|
* | 0个或多个 |
+ | 1个或多个 |
? | 0个或1个 |
{n} | 指定数目 |
{n,} | 不少于指定数目 |
{n, m} | 匹配数目的范围(m不超过255) |
7. 定位符
匹配特定位置的文本需要使用定位符元字符 | 说明 |
---|---|
^ | 文本的开始 |
$ | 文本的结尾 |
[[:<:]] | 词的开始 |
[[:>:]] | 词的结尾 |
- 在集合中(用[]定义),用^来否定该集合
- 匹配字符串的开始处
使用REGEXP起类似LIKE的作用
LIKE和REGEXP的不同在于,LIKE匹配整个字符串,而REGEXP匹配子串,利用定位符,通过用^开始每个表达式,用$结束每个表达式,可以使得REGEXP的作用与LIKE一样。
相关文章推荐
- MYSQL入门学习之二:使用正则表达式搜索
- 【转】MYSQL入门学习之二:使用正则表达式搜索
- Mysql中使用正则表达式搜索——关键字REGEXP(., |, [], ^, $, \\)
- 使用MySQL正则表达式 __MySQL必知必会
- 使用正则表达式实现搜索关键字高亮显示
- mysql中使用正则表达式查询
- mysql中如何使用正则表达式查询
- 使用正则表达式搜索文本文件
- [转] Eclipse中使用正则表达式搜索替换
- Java基础之一组有用的类——使用正则表达式搜索子字符串(TryRegex)
- 学习 Linux,101: 使用正则表达式搜索文本文件
- MySql中正则表达式的使用方法描述
- MySQL中使用正则表达式查询
- mysql中使用正则表达式时的注意事项
- MySql中正则表达式的使用方法描述
- ASP.NET使用正则表达式实现搜索关键字高亮显示
- VC6.0下使用boost的正则表达式库进行搜索
- linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本
- MySQL正则表达式使用——MySQL系列(四)
- Mysql 正则表达式的使用