《MySQL必知必会》学习笔记四(正则表达式)------掌握部分
MySQL必知必会知识预览 ————————————– 华丽的分隔符 ————————————————– 第九章—正则表达式正则表达式用来匹配文本的特殊的串(字符集合)。正则表达式用正则表达式语言来建立,正则表达式语言是用来完成匹配特殊的串的一种特殊语言。正则表达式有特殊的语法和指令。MySQL正则表达式只是正则表达式的一个很小的子集。 RegexpRegexp关键字告诉MySQL后面所跟的东西作为正则表达式处理。 select prod_id,prod_name from products where prod_name Regexp ‘.000’ order by prod_name; Regexp与like 的区别 select prod_id,prod_name from products where prod_name Regexp ‘1000’ order by prod_name; like 匹配不会查出数据,而Regexp则会返回数据。主要原因就是like在没有通配符的情况下,匹配的是整个列的内容,而在数据库中不存在prod_name 为1000的产品,所以没有数据显示,而Regexp则是在值中进行部分匹配。可以说是Regexp的功能更强大于like。。 select prod_id,prod_name from products where prod_name Regexp Binary ‘Jet’ order by prod_name; Regexp 进行OR匹配使用 | 表示 Regexp 进行特定字符匹配Regexp 匹配几个字符之一,利用 [] 表示、另一种形式的OR select prod_id,prod_name from products where prod_name regexp ‘[123]tom’ order by prod_name; 注意带括号与不带括号的区别: Regexp 进行范围匹配[0-9] 0到9数字匹配 Regexp 进行特殊字符匹配select vend_name from vendors where vend_name REGEXP '.' ORDER BY vend_name;
// .匹配.
空白元字符匹配模式(换行,回车其余的可以忘记)
f ==== 换页
n ==== 换行
r ==== 回车
t ==== 制表 tab按键
v ==== 纵向制表
==== (反斜杠)
为什么使用进行正则表达式匹配??
多数的正则表达式实现是使用单个的反斜杠进行转义特殊字符,以便能使用这些字符本身,但是MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式解释另外一个) 匹配 需要三个 Regexp 进行字符类匹配Regexp 匹配多个实例select prod_name from products where prod_name REGEXP '([0-9] sticks?)' order by prod_name
// ( 匹配括号(,[0-9] 匹配任意数字 sticks? 匹配stick或者sticks s后面的?使s可选,?匹配他前面的任意字符字符的0次或者1次
select prod_name from products where prod_name REGEXP '[[:digit:]]{4}' order by prod_name
// 匹配连在一起的4位数字
定位符为了匹配特定位置的文本,需要使用定位符 select prod_name from products where prod_name REGEXP '^[0-9.]' order by prod_name
// 匹配以数字(包括小数点)开头的所有产品,
^的双重用途 select prod_name from products where prod_name REGEXP '^[^0-9.]' order by prod_name
// 匹配不以数字(包括小数点)开头的所有产品,
REGEXP与LIKE 相同作用 select prod_name from products where prod_name REGEXP '^jet$' order by prod_name
// ^ 与 $ 的结合使用
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |