mysql 正则查询 REGEXP的简单使用


-- 查询channels中所有包含10037的数据,这里相当于 select * from table_test WHERE channels like '%10037%'其他复杂正则并不等同like
select * from table_test 
WHERE channels REGEXP '10037'

-- 查询 table_test表中channels字段值包含10037或10001的数据;如果channels数据中有类似100371111这样的数据,那么也会一样查询出来
select * from table_test 
WHERE channels REGEXP '10037|10001' 

-- 效果同上,使用 CONCAT_WS 函数对多个字符串进行拼接,多个字符串用指定字符|分隔 ,这里拼接为 REGEXP '10037|10001' 
select * from table_test 
WHERE channels REGEXP CONCAT_WS('|', '10037', '10001' ) 

注意,这里只是正则匹配所有包含指定字符的数据,所以,如下,查询1003,那么包含1003的所有数据都会被查出来;所以,如果使用类似ID编号进行匹配,只适用于固定长度的数据(如 :1001,1002,1003),非固定长度的数据则不适用(如 :1,11,12,210)

select * from table_test 
WHERE channels REGEXP '1003'limit 10

如果是英文字符串,要注意大小写的正则匹配,like是不区分大小写的,但是REGEXP区分,需要指定大小写。

发布了99 篇原创文章 · 获赞 55 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/torpidcat/article/details/103699734