• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySql官方手册学习笔记2―MySql的模糊查询和正则表达式_MySQL

mysql 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

正则表达式

gaodaima.com
MySql官方手册学习笔记2—MySql的模糊查询和正则表达式 相关链接:MySql官方手册学习笔记1—MySql简单上手http:///database/201210/159522.html MySQL提供标准的SQL模式匹配,以及扩展正则表达式模式匹配的格式。 SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。在 MySQL中,SQL的模式默认是忽略大小写的。下面给出一些例子。注意使用SQL模式时,不能使用=或!=;而应使用LIKE或NOT LIKE比较操作符。 要想找出以“b”开头的名字: mysql> SELECT * FROM pet WHERE name LIKE 'b%';+——–+——–+———+——+————+————+| 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 LIKE '%fy';+——–+——–+———+——+————+——-+| name | owner | species | sex | birth | death |+——–+——–+———+——+————+——-+| Fluffy | Harold | cat | f | 1993-02-04 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+——–+——–+———+——+————+——-+ 要想找出包含“w”的名字: mysql> SELECT * FROM pet WHERE name LIKE '%w%';+———-+——-+———+——+————+————+| 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 |+———-+——-+———+——+————+————+ 要想找出正好包含5个字符的名字,使用“_”模式字符: mysql> SELECT * FROM pet WHERE name LIKE '_____';+——-+——–+———+——+————+——-+| name | owner | species | sex | birth | death |+-本文来源gaodai#ma#com搞@@代~&码*网/——+——–+———+——+————+——-+| Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+——-+——–+———+——+————+——-+ 由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。 扩展正则表达式的一些字符是: · ‘.’匹配任何单个的字符。 · 字符类“[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。 · “ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。 如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询: 为了找出以“b”开头的名字,使用“^”匹配名字的开始: mysql> SELECT * FROM pet WHERE name REGEXP '^b';+——–+——–+———+——+————+————+| name | owner | species | sex | birth | death |+——–+——–+———+——+————+————+| Buffy | Harold | dog | f | 1989-05-13 | NULL || Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |+——–+——–+———+——+————+————+ 如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。 mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'; 为了找出以“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”的名字,使用以下查询: mysql> SELECT * FROM pet WHERE name REGEXP 'w';+———-+——-+———+——+————+————+| 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 |+——-+——–+———+——+————+——-+ gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySql官方手册学习笔记2―MySql的模糊查询和正则表达式_MySQL
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址