您当前的位置: 首页 >  sql

宝哥大数据

暂无认证

  • 3浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MySQL 模式匹配

宝哥大数据 发布时间:2016-12-11 10:18:20 ,浏览量:3

MySQL 模式匹配

MySQL提供标准的SQL模式匹配,以及一种基于类Unix里的程序如vi、grep和sed里的扩展正则表达式模式匹配的格式。 SQL模式匹配允许你使用   ”_”匹配任何单个字符,   ”%”匹配任意数目字符(包括零字符)。 在 MySQL中,SQL的模式默认是忽略大小写的。 下面给出一些例子。注意使用SQL模式时,不能使用=或!=;而应使用LIKE或NOT LIKE比较操作符。

一、”%”匹配任意数目字符(包括零字符)。

1.) 要想找出以“b”开头的名字:

SLECT * FROM table_name WHERE name LIKE 'b%';

2.)要想找出以“fy”结尾的名字:

SELECT * FROM table_name WHERE  name like '%fy'

3.) 要想找出包含“w”的名字:

SELECT * FROM table_name    WHERE name LIKE '%w%'
二、 “_”匹配任何单个字符

如查询名字正好是五个字符, 使用“_”模式字符:

SELECT * FROM table_name WHERE name LIKE '_____';
MySQL提供的扩展正则表达式

  由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。

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

  • ‘.’匹配任何单个的字符。

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

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

如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。 为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询: 1.) 查找名字以b开头:

SELECT * FROM table_name WHERE REGEXP '^b';

2.)查找名字以fy结尾:

SELECT * FROM   table_name WHERE REGEXP 'fy$';

3.)包含‘w’:

SELECT * FROM table_name WHERE REGEXP 'W';
匹配名字正好是5个字符

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

SELECT * FROM   table_name  WHERE name REGEXP '^.....$';

b.)使用“{n}”重复n次操作符,重写前面的查询:

SELECT * FROM table_name WHERE  name REGEXP '^.{5}$';

参考:https://www.shiyanlou.com/courses/running

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.2303s