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]';