mysql正则表达式 LIKE 通配符

扩展正则表达式的一些字符是:

“.”匹配任何单个的字符。

一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。

“ * ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。

正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。

如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。

为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。

为了说明扩展正则表达式如何工作,上面所示的LIKE查询在下面使用REGEXP重写:

为了找出以“b”开头的名字,使用“^”匹配名字的开始并且“[bB]”匹配小写或大写的“b”:

mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";

+--------+--------+---------+------+------------+------------+

| name | owner | species | sex | birth | death |

+--------+--------+---------+------+------------+------------+

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |

+--------+--------+---------+------+------------+------------+

为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:

mysql> SELECT * FROM pet WHERE name REGEXP "fy$";

+--------+--------+---------+------+------------+-------+

| name | owner | species | sex | birth | death |

+--------+--------+---------+------+------------+-------+

| Fluffy | Harold | cat | f | 1993-02-04 | NULL |

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

+--------+--------+---------+------+------------+-------+

为了找出包含一个“w”的名字,使用“[wW]”匹配小写或大写的“w”:

mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";

+----------+-------+---------+------+------------+------------+

| name | owner | species | sex | birth | death |

+----------+-------+---------+------+------------+------------+

| Claws | Gwen | cat | m | 1994-03-17 | NULL |

| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |

| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |

+----------+-------+---------+------+------------+------------+

既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的查询中在模式的两方面放置一个通配符以使得它匹配整个值,就像如果你使用了一个SQL模式那样。

为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:

mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";

+-------+--------+---------+------+------------+-------+

| name | owner | species | sex | birth | death |

+-------+--------+---------+------+------------+-------+

| Claws | Gwen | cat | m | 1994-03-17 | NULL |

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

+-------+--------+---------+------+------------+-------+

你也可以使用“{n}”“重复n次”操作符重写先前的查询:

mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$";

+-------+--------+---------+------+------------+-------+

| name | owner | species | sex | birth | death |

+-------+--------+---------+------+------------+-------+

| Claws | Gwen | cat | m | 1994-03-17 | NULL |

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

+-------+--------+---------+------+------------+-------+

时间: 2024-12-04 23:10:21

mysql正则表达式 LIKE 通配符的相关文章

mysql正则表达式 LIKE 通配符_正则表达式

扩展正则表达式的一些字符是: "."匹配任何单个的字符. 一个字符类"[...]"匹配在方括号内的任何字符.例如,"[abc]"匹配"a"."b"或"c".为了命名字符的一个范围,使用一个"-"."[a-z]"匹配任何小写字母,而"[0-9]"匹配任何数字. " * "匹配零个或多个在它前面的东西.例如,&q

简述MySQL 正则表达式_Mysql

我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配. 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似. 下表中的正则模式可应用于 REGEXP 操作符中. 实例 了解以上的正则需求后,我们就可以更加自己的需求来编写带有正则表达式的SQL语句.以下我们将列出几个小实例(表名:person_tbl )来加深我们的理解: 查找

mysql 正则表达式查询与实例

mysql教程 正则表达式查询与实例    ^ 匹配字符串的开始部分  $ 匹配字符串的结束部分  $sql ="SELECT 'fonfo' REGEXP '^fo$' from  string_find";     . 匹配任何字符(包括回车和新行)  $sql ="SELECT 'fofo' REGEXP '^f.*$' from  string_find";     a* 匹配0或多个a字符的任何序列    $sql ="SELECT 'Ban'

MySql正则表达式的描述

mysql|正则 正则表达式(regex)是定义复杂查询的一个强有力的工具. 这里是一个简单的资料,它忽略了一些详细的信息. 正则表达式定义了一个字符串的规则.最简单的正则表达式不包含任何保留字.例如,正则表达式hello只和字符串"hello"匹配. 一般的正则表达式使用了某些特殊的结构,所以它能匹配更多的字符串.例如,正则表达式hello|word既能匹配字符串"hello"也能匹配字符串"word".举一个更复杂一点的例子,正则表达式B[a

MySQL正则表达式用法详解

我们已经看到了MySQL的LIKE模式匹配和...% MySQL支持的另一种类型的基于正则表达式和REGEXP操作符的模式匹配操作.如果你了解PHP或Perl,那么它很简单,因为这这些脚本正则表达式匹配是非常相似的. 以下是可用于随REGEXP操作符的表的模式. 模式 什么模式匹配 ^ 字符串的开始 $ 字符串的结尾 . 任何单个字符 [...] 在方括号内的任何字符列表 [^...] 非列在方括号内的任何字符 p1|p2|p3 交替匹配任何模式P1,P2或P3 * 零个或多个前面的元素 + 前

MySQL正则表达式初步

  我们知道,在SQL之中,可以用 like 这个谓词(表达式) 来进行模糊检索,并支持 %,?,_等占位符. 但是,这个模糊检索的功能有很多限制,简单来说就是太模糊了. 在MySQL中提供了 REGEXP 关键字来支持正则表达式,当然,只是一些很简单的正则啦. 首先,我们构造一些测试数据. ? 1 2 3 4 5 6 7 8 9 -- 建表 USE test; DROP TABLE IF EXISTS t_regcustomer; CREATE TABLE t_regcustomer (   

MySQL正则表达式使用

  使用REGEXP关键字 1.基本字符匹配 ? 1 2 3 SELECT prod_name From Products Where prod_name REGEXP'.000' LIKE和REGEXP区别 LIKE会匹配这个列,而REGEXP会在列值内进行匹配 在MySQL中正则表达式不区分大小写,要区分需使用BINARY关键字,如Where prod_name REGEXP BINARY'Jet.000' 2.进行OR匹配 使用"|" ? 1 2 3 SELECT prod_na

mysql正则表达式使用说明

"."匹配任何单个的字符. 一个字符类"[...]"匹配在方括号内的任何字符.例如,"[abc]"匹配"a"."b"或"c".为了命名字符的一个范围,使用一个"-"."[a-z]"匹配任何小写字母,而"[0-9]"匹配任何数字. " * "匹配零个或多个在它前面的东西.例如,"x*"匹配任

coolcode转SyntaxHighlighter与Mysql正则表达式实现分析_正则表达式

最近,我抽空改成SyntaxHighlighter.由于coolcode插件的开头标签是 <coolcode> 或者[coolcode]这样的,而SyntaxHighlighter是 [code lang="php"] 这样的(或者其他).遂只能想办法把老的格式转化成新的格式.当然,肯定用到正则表达式了. 原来的代码高亮开头标识为 <coolcode lang="php" download="123.php" linenum=&