MySQLi-正規表現

MySQLiのパターンマッチングを見てきました LIKE ...%。MySQLiは、正規表現に基づく別のタイプのパターンマッチング操作をサポートしています。REGEXPオペレーター。PHPまたはPERLを知っている場合、このマッチングはスクリプトの正規表現と非常に似ているため、理解するのは非常に簡単です。

以下は、一緒に使用できるパターンの表です REGEXP オペレーター。

パターン パターンが一致するもの
^ 文字列の始まり
$ 文字列の終わり
任意の1文字
[...] 角括弧の間にリストされている文字
[^ ...] 角括弧の間にリストされていない文字
p1 | p2 | p3 交替; パターンp1、p2、またはp3のいずれかに一致します
* 先行する要素の0個以上のインスタンス
+ 前の要素の1つ以上のインスタンス
{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]';