mysql 正则表达式数字_MYSQL使用正则表达式过滤数据

一、正则与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的所有行:

a57c2627273810ad43a36899ad53940b.png

进行OR匹配相当于:或操作 “|”

780c2388d42e86a4d3840d97d7cd3186.png

匹配几个字符之一只想匹配特定的字符。 可以通过指定一组用[和]括起来的字符来完成。

ffdb0b29fd1281654201fa4435c22061.png

[456]定义了一组字符,他的意思是匹配4或5或6. []是另一种形式的OR语句。[456]是[4|5|6]的缩写。匹配范围

[1-3] a-z都是合法的范围

e45d2b3a827c6e2121c085ea497684d0.png

匹配特殊字符

正则表达式语言由特殊含义的特殊字符构成。

. 在正则表达式中表示匹配任何一个字符

比如匹配prod_name中包括on字符串的行:

0f21095672a52582ef1cc19ab1e1ffb4.png

那如何匹配.,[],|,-?

为了匹配特殊字符,必须用\\为前导。 比如\\.表示查找·

匹配字符类

e558a937590553e52fdd06ae1ff51aae.png

匹配多个实例

184465933f48068ab0f24370e66fe386.png

da8e09d67231a5e2affbbce0aeddcd35.png

再比如 匹配连在一起的4位数字:

sticks? : s后的?使s可选,因为?匹配它前面紧跟的任何字符的0次或者1次出现。

2370c2fdb5f8a9451e61c395bd906d6c.png

[:digit:]匹配任意数字,因而它为数字的一个集合。{4}确切地要求它前面的字符出现4次。

所以[:digit:]{4}匹配连在一起的任意4位数字。

762dda1ba5311b0065e74869ee5ee6de.png

三、定位符

目前为止所有例子都是匹配一个串中任意为止的文本。为了匹配特定为止的文本,需要使用定位符。

4ebe50f4e313790c77ae33249ce11627.png

6ddf281951bb44b9415cd33ae759c786.png

也可以在不使用数据库的情况下测试正则表达式的正确性:

SELECT 来测试正则表达式,REGEXP检查总是返回0或1,

SELECT  'HELLO‘  REGEXP '0‘//返回为0

以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值