mysql 的like 和正則表示式 regexp
阿新 • • 發佈:2019-02-09
萬用字元 | 含義 |
---|---|
% | 代表任意多個字元 |
_(下劃線) | 代表一個字元 |
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 |
+------+
就是這麼點。夠用就好。