MYSQL使用正则表达式过滤数据
2016-05-05 00:00
801 查看
一、正则与LIKE的区别
Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。
例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的行
REGEXP'.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。
注意:
关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)。
关于大小写的区分:MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写。如果要区分大小写,应该使用BINARY关键字,如where post_name REGEXP BINARY 'Hello.000'
二、基本字符匹配
检索列prod_name 包含文本1000的所有行:
进行OR匹配
相当于:或操作 “|”
匹配几个字符之一
只想匹配特定的字符。 可以通过指定一组用
匹配特殊字符
正则表达式语言由特殊含义的特殊字符构成。
比如匹配prod_name中包括
那如何匹配
为了匹配特殊字符,必须用
匹配字符类
匹配多个实例
再比如 匹配连在一起的4位数字:
所以
三、定位符
目前为止所有例子都是匹配一个串中任意为止的文本。为了匹配特定为止的文本,需要使用定位符。
也可以在不使用数据库的情况下测试正则表达式的正确性:
SELECT 来测试正则表达式,REGEXP检查总是返回0或1,
SELECT 'HELLO‘ REGEXP '0‘//返回为0
以上就是本文的全部内容,希望对大家的学习有所帮助。
mysql 复制过滤重复如何解决
MySql like模糊查询通配符使用详细介绍
在MySQL中使用通配符时应该注意的问题
python实现mysql的单引号字符串过滤方法
Python连接MySQL并使用fetchall()方法过滤特殊字符
MYSQL必知必会读书笔记 第一章(基础)
MYSQL必知必会读书笔记第二章之版本更改
MYSQL必知必会读书笔记第三章之显示数据库
MYSQL必知必会读书笔记第四章之检索数据
MYSQL必知必会读书笔记第五章之排序检索数据
MYSQL必知必会读书笔记第六章之过滤数据
MYSQL必知必会读书笔记第七章之数据过滤
MYSQL必知必会读书笔记第八章之使用通配符进行过滤
Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。
例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的行
REGEXP'.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。
注意:
关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)。
关于大小写的区分:MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写。如果要区分大小写,应该使用BINARY关键字,如where post_name REGEXP BINARY 'Hello.000'
二、基本字符匹配
检索列prod_name 包含文本1000的所有行:
进行OR匹配
相当于:或操作 “|”
匹配几个字符之一
只想匹配特定的字符。 可以通过指定一组用
[和
]括起来的字符来完成。
[456]定义了一组字符,他的意思是匹配4或5或6.
[]是另一种形式的OR语句。
[456]是
[4|5|6]的缩写。匹配范围
[1-3]
a-z都是合法的范围
匹配特殊字符
正则表达式语言由特殊含义的特殊字符构成。
.在正则表达式中表示匹配任何一个字符
比如匹配prod_name中包括
on字符串的行:
那如何匹配
.,
[],
|,
-?
为了匹配特殊字符,必须用
\\为前导。 比如
\\.表示查找
・
匹配字符类
匹配多个实例
再比如 匹配连在一起的4位数字:
sticks?:
s后的
?使s可选,因为
?匹配它前面紧跟的任何字符的0次或者1次出现。
[:digit:]匹配任意数字,因而它为数字的一个集合。
{4}确切地要求它前面的字符出现4次。
所以
[:digit:]{4}匹配连在一起的任意4位数字。
三、定位符
目前为止所有例子都是匹配一个串中任意为止的文本。为了匹配特定为止的文本,需要使用定位符。
也可以在不使用数据库的情况下测试正则表达式的正确性:
SELECT 来测试正则表达式,REGEXP检查总是返回0或1,
SELECT 'HELLO‘ REGEXP '0‘//返回为0
以上就是本文的全部内容,希望对大家的学习有所帮助。
您可能感兴趣的文章:
mysql正则表达式 LIKE 通配符mysql 复制过滤重复如何解决
MySql like模糊查询通配符使用详细介绍
在MySQL中使用通配符时应该注意的问题
python实现mysql的单引号字符串过滤方法
Python连接MySQL并使用fetchall()方法过滤特殊字符
MYSQL必知必会读书笔记 第一章(基础)
MYSQL必知必会读书笔记第二章之版本更改
MYSQL必知必会读书笔记第三章之显示数据库
MYSQL必知必会读书笔记第四章之检索数据
MYSQL必知必会读书笔记第五章之排序检索数据
MYSQL必知必会读书笔记第六章之过滤数据
MYSQL必知必会读书笔记第七章之数据过滤
MYSQL必知必会读书笔记第八章之使用通配符进行过滤
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- msql 正则表达式
- 正则表达式
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志