正则表达式式用来匹配文本的特殊的串(字符集合)
4.1 基本字符匹配 REGEXP
字符 . 表示匹配任意一个字符
>>> SELECT * FROM trade WHERE product_name REGEXP '1000' ORDER BY produc_name;
>>> SELECT * FROM trade WHERE product_name REGEXP '.000' ORDER BY produc_name;
4.2 进行OR匹配 |
搜索两个串,在正则表达式中的或用|表示。
>>> select * from trade where prod_name REGEXCP '1000|2000' order by prod_name;
4.3 匹配任意特定的字符
[] 将特定的字符放入[]内实现,中括号内的是字符,所以不需要符号分割,直接连写即可。
[^] 查找不在[]内的字符。
>>> select * from trade where prod_name REGEXP '[123] Ton' order by prod_name; #查找名称含‘1 Ton,2 Ton,3 Ton’的产品
>>> select * from trade where prod_name REGEXP '[^123] Ton' order by prod_name; #查找名称不含‘1 Ton,2 Ton,3 Ton’的产品
4.4 匹配一定范围的字符
[0-9],[a-z] 查找0-9范围的字符, -表示一个范围。
>>> select * from trade where prod_name REGEXP '[1-9] Ton' order by prod_name;
4.5 匹配特殊字符
特殊字符需要转移,MySQL中使用\\ 进行转义。
>>> select * from trade where prod_name REGEXP '\\.' order by prod_name;
4.6 匹配字符类
[:alnum:] <=> [a-zA-Z0-9] 任意数字和字母
[:alpha:] <=> [a-zA-Z] 任意字母
[:digit] <=> [0-9] 任意数字
[:lower:] <=> [a-z] 任意小写字母
[:upper:] <=> [A-Z] 任意大写字母
4.7 匹配多个实例
* 0个或多个匹配
+ 1个或多个匹配
? 0个或1个匹配
{n} 匹配n次
{n,} 匹配不少于n次
{n,m} 匹配n-m次,m值不能大于255
>>> select * from trade where prod_name REGEXP '\\([0-9] sticks{?}\\)';
>>> select * from trade where prod_name REGEXP '[[:digit:]]{4}' order by prod_name;
4.8 定位符
^ 开头
$ 结尾
>>> select * from trade where prod_name REGEXP '^[0-9\\.]';