首页 MySql数据库教程 MySQL REGEXP正则表查询方法大全详解
pay pay
教程目录

MySQL REGEXP正则表查询方法大全详解

日期: 三月 25, 2023, 4:52 p.m.
阅读: 274
作者: Python自学网-村长

摘要: MySQL 中可以使用正则表达式(Regular Expression,简称 REGEXP)来进行模糊匹配查询。下面是 MySQL 中常用的正则表达式查询方法及其用法:

MySQL 中可以使用正则表达式(Regular Expression,简称 REGEXP)来进行模糊匹配查询。下面是 MySQL 中常用的正则表达式查询方法及其用法:

1.匹配单个字符

正则表达式中使用 "." 来匹配任意单个字符,例如:

SELECT * FROM mytable WHERE mycolumn REGEXP 'r..d';

这个查询将会匹配 mycolumn 字段中所有以 "r" 开头,以 "d" 结尾,中间包含任意两个字符的数据。

2.匹配多个字符

正则表达式中使用 "[]" 来匹配多个字符。例如:

SELECT * FROM mytable WHERE mycolumn REGEXP '[abc]';

这个查询将会匹配 mycolumn 字段中所有包含 "a"、"b" 或 "c" 中任意一个字符的数据。

3.匹配字符集合

正则表达式中使用 "[]" 来匹配多个字符,可以指定一个字符集合。例如:

SELECT * FROM mytable WHERE mycolumn REGEXP '[a-z]';

这个查询将会匹配 mycolumn 字段中所有包含小写字母的数据。

4.匹配字符集合的补集

正则表达式中使用 "[^]" 来匹配字符集合的补集。例如:

SELECT * FROM mytable WHERE mycolumn REGEXP '[^0-9]';

这个查询将会匹配 mycolumn 字段中所有不包含数字的数据。

5.匹配重复出现的字符

正则表达式中使用 "{}" 来匹配重复出现的字符。例如:

SELECT * FROM mytable WHERE mycolumn REGEXP 'o{2,3}';

这个查询将会匹配 mycolumn 字段中所有包含重复出现 2 次或 3 次的 "o" 字符的数据。

6.匹配开头和结尾

正则表达式中使用 "^" 和 "$" 来匹配字符串的开头和结尾。例如:

SELECT * FROM mytable WHERE mycolumn REGEXP '^a.*e$';

这个查询将会匹配 mycolumn 字段中所有以 "a" 开头,以 "e" 结尾的数据。

除了以上常用的正则表达式查询方法之外,MySQL 还提供了其他的正则表达式查询函数,例如:

  • REGEXP_REPLACE:用于替换字符串中与正则表达式匹配的部分。
  • REGEXP_INSTR:用于查找字符串中与正则表达式匹配的部分的位置。
  • REGEXP_SUBSTR:用于提取字符串中与正则表达式匹配的部分。

需要注意的是,在使用正则表达式查询时,应该优化查询,避免查询过慢或过于复杂。正则表达式的匹配规则相对于普通的字符串匹配来说更为灵活,但也更容易出现错误。因此,在使用正则表达式查询时,应该仔细检查正则表达式的规则是否符合预期,并对正则表达式进行测试和调试,以确保查询结果的准确性和可靠性。

下面是一个使用 REGEXP_REPLACE 函数的例子:

SELECT REGEXP_REPLACE('Hello world', 'o', '0');

这个查询将会返回字符串 "Hell0 w0rld",因为它将字符串 "Hello world" 中所有的 "o" 字符替换为 "0" 字符。

下面是一个使用 REGEXP_INSTR 函数的例子:

SELECT REGEXP_INSTR('Hello world', 'o');

这个查询将会返回数字 "5",因为它查找字符串 "Hello world" 中第一个 "o" 字符的位置。

下面是一个使用 REGEXP_SUBSTR 函数的例子:

SELECT REGEXP_SUBSTR('Hello world', 'o');

这个查询将会返回字符串 "o",因为它提取字符串 "Hello world" 中第一个与正则表达式匹配的字符。

以上是 MySQL 中常用的正则表达式查询方法及其用法,希望能对你有所帮助!

下面是正则匹配符对照表:

选项 说明 例子 匹配值示例
^ 匹配文本的开始字符 '^b' 匹配以字母b开头的字符串 book、big、banana、 bike
$ 匹配文本的结束字符 'st$’匹配以st结尾的字符串 test、resist、persist
. 匹配任何单个字符 'b.t’匹配任何b和t之间有一个字符 bit、bat、but、bite
* 匹配零个或多个在它前面的字符 'f*n’匹配字符n前面有 任意个字符f fn、fan、faan、abcn
+ 匹配前面的字符1次或多次 'ba+’匹配以b开头,后面至少紧跟一个a ba、bay、bare、battle
<字符串> 匹配包含指定字符的文本 'fa’ fan、afa、faad
[字符集合] 匹配字符集合中的任何一个字符 '[xz]'匹配x或者 z dizzy、zebra、x-ray、 extra
[^] 匹配不在括号中的任何字符 '[^abc]’匹配任何不包含a、b或c的字符串 desk、fox、f8ke
字符串{n,} 匹配前面的字符串至少n次    b{2}匹配2个或更多的b bbb、 bbbb、 bbbbbbb
字符串
{n,m}
匹配前面的字符串至少n次,至多m次 b{2,4}匹配最少2个,最多4 个b bbb、 bbbb

 

部分文字内容为【Python自学网】原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
回顶部