MySQLi - 正則表示式



您已經瞭解了使用LIKE ...%進行 MySQL 模式匹配。MySQL 支援另一種基於正則表示式和REGEXP運算子的模式匹配操作。如果您熟悉 PHP 或 PERL,那麼您很容易理解,因為這種匹配與那些指令碼語言的正則表示式非常相似。

以下是可與REGEXP運算子一起使用的模式表。

模式 模式匹配的內容
^ 字串開頭
$ 字串結尾
. 任何單個字元
[...] 方括號之間列出的任何字元
[^...] 方括號之間未列出的任何字元
p1|p2|p3 選擇;匹配任何模式 p1、p2 或 p3
* 前一個元素的零個或多個例項
+ 前一個元素的一個或多個例項
{n} 前一個元素的 n 個例項
{m,n} 前一個元素的 m 到 n 個例項

示例

現在,基於上表,您可以設計各種型別的 SQL 查詢來滿足您的需求。在這裡,我列出了一些供您理解。假設我們有一個名為 tutorials_inf 的表,它有一個名為 name 的欄位 -

查詢所有以 'sa' 開頭的名稱的查詢

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^sa';

示例輸出應如下所示 -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

查詢所有以 'ai' 結尾的名稱的查詢

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'ai$';

示例輸出應如下所示 -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

查詢所有包含 'a' 的名稱的查詢

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'a';

示例輸出應如下所示 -

+----+-------+
| id | name  |
+----+-------+
|  1 | sai   |
|  3 | ram   |
|  4 | johar |
+----+-------+
3 rows in set (0.00 sec)

查詢所有以母音開頭的名稱的查詢

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^[aeiou]';
廣告
© . All rights reserved.