mysql数据库中 正则表达式 “n,m”的用法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库中 正则表达式 “n,m”的用法?相关的知识,希望对你有一定的参考价值。
select id from b1 where id regexp '[[:digit:]]1,4'; 这个结果是输出了所有的id,但我想的是输出 1到4个 。 希望哪位大侠可以说下n,m的具体用法,最好写个例子。
参考技术A n,m表示,前面的字符至少匹配n次,最多匹配m次
用php
preg_match()函数举例
<?php
$str
=
'goooogle';
if(preg_match("/go1,3gle/",$str))
echo
'匹配';
else
echo
'不匹配';
//g*gle
其中的*号只能在1-3个o时能匹配
?>
数据库MySQL 通配符与模式匹配正则表达式
今天一个同事说他写了一个sql语句查询没有结果,他是这样写的
SELECT * FROM Persons WHERE City LIKE ‘[BLN]%‘
那么就再理一下:
SQL通配符是使用特殊字符或语法拼写,用来执行模糊搜索指令的语句。查询数据库中的数据时,sql通配符可以替代一个或多个字符。使用是必须与 LIKE 运算符一起使用。在SQL中可以使用的通配符有:
通配符 | 说明 |
% | 替代一个或多个字符 |
- | 仅替代一个字符 |
[charlist] | 字符列中的任何一个字符 |
[^charlist]或[!charlist] | 不在字符列中的任何单一字符 |
"%":匹配任意数目的字符(零个或多个);"_":匹配任何单个字符;
在使用通配符时 可以用 LIKE或NOT LIKE 比较操作符,而不能用 = 或 !=
以user表为例:
查询以a结尾的记录:select * from user where username like ‘%a‘;
查询以a开头的用户名:select * from user where username like ‘a%‘;
查询不是以a开头的用户名:select * from user where username like ‘a%‘;
查询包含a的用户名:select * from user where username like ‘%a%‘;
查询有两个字符的用户名:select * from user where username like ‘__‘;
重点在这里:
MySQL模式匹配的其他类型是使用扩展正则表达式,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,之后遇到HIVE可以自己查下LIKE 、RLIKE)。
扩展正则表达式的一些字符是:
"." 匹配任何单个的字符,一个字符类“[...]”匹配方括号内的任何字符如,"[abc]" 匹配"a"、"b"或"c"。为了命名字符的一个范围,使用一个连接符"-" 。"[a-z]" 匹配任何小写字母,而"[0-9]"匹配任何数字。
"* " 匹配零个或多个在它前面的东西。例如,"x*" 匹配任何数量的 "x" 字符,"[0-9]*" 匹配的任何数量的数字,而“.*”匹配任何数量的任何字符。
另外,正则表达式是区分大小写的,当然也可以使用一个字符类同事匹配大小写如,"[aA]" 匹配小写或大写的"a"而"[a-zA-Z]"匹配两种写法的任何字母。
为定位一个模式,以便匹配目标值的开始或末尾,在模式开始处使用“^”或在模式的结尾用“$”。 下面是使用REGEXP写LIKE查询:
查询city以 “L”开头的人信息,使用“^”匹配名字的开始并且“[lL]”匹配小写或大写的“l”
select * from Persons where City REGEXP "^[lL]";
查询lastname以“sh”结尾的人,使用“$”匹配名字的结尾:
SELECT * FROM Persons WHERE LastName REGEXP "sh$";
查询lastname包含一个"A"的人,使用“[aA]”匹配小写或大写的“a”:
SELECT * FROM Persons WHERE LastName REGEXP "[aA]";
查询city名恰好包含6个字符的记录,使用“^”和“$”匹配名字的开始和结尾,和6个“.”实例在两者之间:
SELECT * FROM Persons WHERE city REGEXP "^......$";
也可以使用“{n}”“重复n次”操作符:
SELECT * FROM pet WHERE name REGEXP "^.{6}$";
本文出自 “Datas” 博客,请务必保留此出处http://datas.blog.51cto.com/10590222/1894921
以上是关于mysql数据库中 正则表达式 “n,m”的用法?的主要内容,如果未能解决你的问题,请参考以下文章