您的位置:首页 > 数据库 > MySQL

[MYSQL-9]用正则表达式进行搜索

2017-09-16 10:18 260 查看
REGEXP :告诉编译器regexp后面跟的是正则表达式。

基本字符匹配

#1、列值中包含1000即可
SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000'
ORDER BY prod_name;
#2、LIKE匹配整个列,以下为列值全名是1000才可以。
SELECT prod_name
FROM products
WHERE prod_name LIKE '1000'
ORDER BY prod_name;


LIKE匹配整个串,REGEXP匹配淄川

REGEXP BINARY:区分大小写

#3、.表示匹配任意一个字符
SELECT prod_name
FROM products
WHERE prod_name REGEXP BINARY '.000'
ORDER BY prod_name;


进行OR匹配

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000|2000|3000'
ORDER BY prod_name;


匹配几个字符之一

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123] Ton'
ORDER BY prod_name;


prod_name

‘1 ton anvil’

‘2 ton anvil’

[123] TON与[1|2|3]TON相同

匹配特殊字符

正则表达式由具有特殊含义的特殊字符构成。如.、[]、|、-(表示一个范围如1-9),如果想在文本中匹配这些特殊字符,需采用\为前导。\-表示查找 -,\.表示查找 . ,\(匹配(。

多数正则表达式实现使用单个反斜杠转义字符,MYSQL使用两个,主要是MYSQL解释一个,正则表达式解释一个。

匹配字符类

类名说明
[:alnum:]任意字母与数字(同[a-zA-Z0-9])
[:alpha:]任意字母(同[a-zA-Z])
[:blank:]空格和制表(同[\\t])
[:digit:]任意数字同[0-9]
[:lower:]任意小写字母(同[a-z])
匹配多个实例

select prod_name from products where prod_name REGEXP '\\([0-9] sticks?\\)' order by prod_name;
select prod_name from products where prod_name REGEXP '[[:digit:]]{4}';# 如果只有一个中括号,啥也不返回。
select prod_name from products where prod_name REGEXP '[0-9][0-9][0-9][0-9]';# SAME_name AS THE ONE BEFORE
select prod_name from products where prod_name REGEXP 'stick' order by prod_name;
select prod_name from products where prod_name REGEXP '^[0-9\\.]' order by prod_name;


测试正则表达式

select 'hello' REGEXP 'l*';#return 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式 MYSQL