前面我們學(xué)習(xí)了正則表達(dá)式其實(shí)我們?cè)趍ysql中也可以使用正則語(yǔ)句來(lái)查詢數(shù)據(jù)。
select * from studentinfo where student_name like '王';
select * from studentinfo where student_name regexp '王';
LIKE匹配整個(gè)列。如果被匹配的文本在列值 中出現(xiàn),LIKE將不會(huì)找到它,相應(yīng)的行也不被返回(除非使用通配符)。而REGEXP在列值內(nèi)進(jìn)行匹配,如果被匹配的文本在列值中出現(xiàn),REGEXP將會(huì)找到它,相應(yīng)的行將被返回。這是一個(gè)非常重要的差別。
select * from studentinfo where student_name regexp '^牛';
select * from studentinfo where student_name regexp '.牛$';
select * from studentinfo where student_name regexp '.牛.*$';
select * from studentinfo where student_name regexp '成|王';
select * from studentinfo where student_name regexp '^成|王';
select * from studentinfo where student_name regexp '成|牛';
select * from studentinfo where student_name regexp '.牛.{1,4}';
select * from studentinfo where phonenum regexp '^[1-7]{2,4}';
select * from studentinfo where student_name regexp '.牛( |小)';
轉(zhuǎn)義: 正則表達(dá)式語(yǔ)言由具有特定含義的特殊字符構(gòu)成。我們已經(jīng)看到.、[]、|和-等,還有其他一些字符。請(qǐng)問(wèn),如果你需要匹配這些字符,應(yīng)該怎么辦呢?例如,如果要找出包含.字符的值,怎樣搜索?請(qǐng)看下面的例子:
SELECT name,email FROM studentinfo WHERE email REGEXP '.';
SELECT * FROM studentinfo WHERE student_name REGEXP '^李.*.';