前面介紹過 MySQL 。MySQL 還支持另一種基于正則表達式的模式匹配操作,使用的運算符是 REGEXP。如果你學過 PHP 或 PERL,那么這就很好理解了,因為這里講的這種匹配方式跟那些腳本語言中的正則表達式很相似。
下面就是一個模式列表,其中結合使用了 REGEXP 運算符。
| 模式 | 模式匹配對象 |
|---|---|
^ |
字符串的開始位置 |
$ |
字符串的結尾 |
. |
單個字符 |
[...] |
一對方括號之間的字符 |
[^...] |
未在一對方括號之間的字符 |
p1|p2|p3 |
交替匹配模式1、模式2或模式3 |
* |
匹配前面元素的零個或多個實例 |
+ |
匹配前面元素的一個或多個實例 |
{n} |
匹配前面元素的n個實例 |
{m,n} |
匹配前面元素的m~n個實例,m <= n |
根據(jù)以上這張列表,可以設計出能夠滿足各種要求的 SQL 查詢。下面就來列舉一二。假設有一張表 person_tbl,其中包含一個name字段。
尋找以 'st' 開頭的名稱,查詢如下:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
尋找以 'ok' 結尾的名稱,查詢如下:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
尋找包含 'mar' 的名稱,查詢如下:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
尋找以元音字母開始并以 'ok' 結尾的名稱,查詢如下:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';