like有兩個模式:_和%git
select name from table where name like '陳__';
select name from table where name like '陳%'; select name from table where name like '%宏%';
1.基本字符匹配正則表達式
select * from table where col regexp '.000';
2.like匹配整個值 通配符%spa
3.regexp可以使用正則自由定製 定位符號^$
4.若是要區分大小寫,應該使用BINARY關鍵字,如where xxx REGEXP BINARY 'Hello.000'
5.使用|實現or效果code
select * from table where col regexp '1000|2000';
6.匹配幾個字符之一,用[和]擴起來regexp
select * from table where col regexp '[abcde]';
7.匹配範圍:[0-9] [A-Z] [a-z]blog
select * from table where col regexp '[0-9]Ton';
8.匹配特殊字符使用\\進行轉義it
注意:
a)爲了匹配\自己,須要使用\\\
b)在通常狀況下正則表達式的轉義加一個「\」就能夠了,在MySQL中須要加兩個。table
9.匹配字符類(Posix字符類)class
使用的時候須要外面加一層[],例如[[:digit:]]變量
select * from table where col regexp 'name[[:digit:]]';
10.匹配多個實例
select * from table where col regexp '[0-9]{1,3}';
11.定位符
12.^有兩個用法,一個是非,一個是文本的開始,用[]中表示非,不然是文本的開始。
13.MySQL的正則比較簡化,沒有惰性匹配/貪婪匹配,[]內不支持\w\s\d這種語法,也不支持中文。
14.這兩種模式不要混着用,like模式是不支持正則表達式的,REGEXP模式也不認識_和%。
15.注意:regexp == rlike 同義詞 not like not regexp
16.in不支持模糊查詢,如:
select * from table where name in ('%宏%');
17.like concat('%',name,'%')做用在於name爲變量,在傳參的時候方便。
END 2018-06-01 15:00:02