MySQL正则表达式常规使用

一级标题

#MySQL正则表达式常规使用

  1. 使用REGEXP关键字
// A code block
SELECT product_sku
From t_product
Where product_sku REGEXP'.000'
// An highlighted block
LIKEREGEXP区别
LIKE会匹配这个列,而REGEXP会在列值内进行匹配

在MySQL中正则表达式不区分大小写,要区分需使用BINARY关键字,如Where product_sku REGEXP BINARY'Jet.000'

2.匹配范围

[0-9]数字0到9
[a-z]a到z
[A-Z]A到Z

// A code block
SELECT count(1) From t_product Where product_sku REGEXP BINARY '[0-9]'
SELECT count(1) From t_product Where product_sku REGEXP BINARY '[a-z]'
SELECT count(1) From t_product Where product_sku REGEXP BINARY '[A-Z]'

3.进行OR匹配
下面展示一些 内联代码片

4. 使用“|”
// A code block
SELECT product_sku
From t_product
Where product_sku REGEXP'1000|2000'

5.匹配几个字符之一
指定一组用[和]扩起来的字

下面展示一些 内联代码片

// A code block
SELECT product_sku
From t_product
Where product_sku REGEXP'[123]ton'

6.匹配特殊字符
在特殊字符前加“\”进行转义,注意在一般情况下正则表达式的转义加一个“\”就可以了,在MySQL中需要加两个

select column from table where column regexp ‘\-’ order by column;

	这种处理方式就是所谓的转义(escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义;
	(为了匹配反斜杠{\}字符本身,需要使用\\\)

PS:多数正则表达式实现使用单个反斜杠转义特殊字符,以便能够使用这些字符本身,而MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释一个)

\也用来引用元字符(具有特殊含义的字符),如下:

// A code block
SELECT product_sku
From t_product
Where product_sku REGEXP'\\.000'

MySQL正则表达式常规使用_第1张图片

7.匹配多个实例

// An highlighted block
SELECT product_sku
From t_product
Where product_sku REGEXP'[0-9]{1,3}'

8.定位符
有时候为了匹配特定位置的文本,需要使用定位符

// A code block
例如:找出一个以一个数(包括小数点开始的数)开始的所有数值,简单搜索[0-9\\.]或([[:digit:]\\.])不行,因为它将在文本内任意位置查找匹配,可以使用^定位符,如下
// An highlighted block
select column from table where column regexp '^[0-9\\.]' order by column;

^匹配串的开始,有两种用法:

①在集合中(用[和]定义),用它来否定该集合

②用来指串的开始处

使regexp和like起相同作用:like匹配整串二regexp匹配子串,可以利用定位符,用^开始每个表达式,用$结束每个表达式,就可以使regexp和like作用一样

你可能感兴趣的:(MySql,正则表达式,mysql,sql)