模式匹配是數據庫的一項標準化功能,一般的數據庫都會提供兩個模式檢索符號_和%,已經模式檢索關鍵字like、not like。
_代表匹配單個字符,而%表示匹配0到多個字符。like表示包含,而not like表示不包含。
除了標準的模式匹配外,Mysql還提供了模式匹配的拓展——正則匹配。
創建一張學生表
CREATE TABLE `student` (
`name` char(30) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表中的記錄如下
name |
張三 |
李四 |
張三丰 |
王五 |
吳五 |
正則匹配相關的關鍵字是rlike和not rlike,正則式中支持了一些拓展的匹配符:
1.ab:表示字符a且字符b,即串'ab'
2.點號.:表示匹配任意的單個字符
找出姓名中姓張的人名
select * from student where name rlike '張.';
需要注意的是.只管匹配一個字符,而不理會該字符後面是否還有字符,輸出結果如下
name |
張三 |
張三丰 |
3.-:表示一個聯繫區間a-z表示所有小寫字母,0-9表示所有數字
4.[]:表示取其中的一個字符,[a-z]表示取小寫字母中的一個,[ab]表示取字符a或者字符b
5.*:用來表示數量,0個或者多個,[a-z]*表示多個字符
6.^:表示開頭匹配
查找姓名中以張開頭的
select * from student where name rlike '^張';
輸出結果
name |
張三 |
張三丰 |
7.&:表示結尾匹配
查找姓名中以五結尾的
select * from student where name rlike '五$';
輸出結果
name |
王五 |
吳五 |