1. 程式人生 > >mysql 的like 和正則表示式 regexp

mysql 的like 和正則表示式 regexp

萬用字元 含義
% 代表任意多個字元
_(下劃線) 代表一個字元
escape(關鍵字) 轉義字元(/)後面的%或_就不作為萬用字元了,用於查詢%或_
現有一張表:
mysql> select * from test;
+------+
| name | +------+ | z1 | | z2 | | z3 | | ab1 | | ab2 | | ab3 | +------+ 具體使用: 一: mysql> select name from test where name like 'a%' +------+ | name | +------+ | ab1 | | ab2 | | ab3 | +------+ 二: mysql> select name from test where name like '%1'; +------+ | name | +------+ | z1 | | ab1 | +------+
mysql> insert into test values('ab%1'),('ab%2'),('ab%3'); mysql> select * from test; +------+ | name | +------+ | z1 | | z2 | | z3 | | ab1 | | ab2 | | ab3 | | ab%1 | | ab%2 | | ab%3 | +------+ 三: 如果不使用escape:都匹配到了,但這不是我想要的結果。 mysql> select name from test where name like 'ab%' ; +------+
| name | +------+ | ab1 | | ab2 | | ab3 | | ab%1 | | ab%2 | | ab%3 | +------+ 使用之後:這才是我想要的。 mysql> select name from test where name like 'ab/%%' escape '/'; +------+ | name | +------+ | ab%1 | | ab%2 | | ab%3 | +------+

正則表示式:這是符合某一個標準的,所以不管是shell中還是其他程式語言中的,都差不多。
下面給出一個別人歸納的地址:
http://www.jb51.net/article/72928.htm
這裡寫圖片描述

mysql> select name from test where name regexp '^a';
+------+
| name |
+------+
| ab1  |
| ab2  |
| ab3  |
| ab%1 |
| ab%2 |
| ab%3 |
+------+

就是這麼點。夠用就好。