MySQLは正規表現マッチングをサポートしますMySQLはREGEXP演算子を使用して正規表現マッチングを実行します
正規表現はREGEXPオペレーターに適用できます
モード | 説明 |
---|---|
^ | 入力文字列の先頭に一致します。RegExpオブジェクトのMultilineプロパティが設定されている場合、^は「\ n」または「\ r」の後の位置にも一致します。 |
$ | 入力文字列の終了位置と一致します。RegExpオブジェクトのMultilineプロパティが設定されている場合、$は「\ n」または「\ r」の前の位置とも一致します。 |
。 | 「\ n」以外の任意の1文字に一致します。'\ n'を含む任意の文字に一致させるには、 '[。\ n]'のようなパターンを使用します。 |
[...] | キャラクターコレクション。含まれている任意の1文字に一致します。たとえば、「[abc]」は「plain」の「a」と一致します。 |
[^ ...] | 負の文字セット。含まれていないすべての文字に一致します。たとえば、「[^ abc]」は「plain」の「p」と一致します。 |
p1 | p2 | p3 | p1またはp2またはp3に一致します。たとえば、「z | food」は「z」または「food」と一致します。「(z | f)ood」は「zood」または「food」に一致します。 |
* | 前の部分式に0回以上一致します。たとえば、zo *は「zoo」だけでなく「z」にも一致します。* {0、}と同等です。 |
+ | 前の部分式に1回以上一致します。たとえば、「zo +」は「zo」と「zoo」に一致できますが、「z」には一致しません。+ {1、}と同等です。 |
{n} | nは負でない整数です。特定のn回一致します。たとえば、「o {2}」は「Bob」の「o」と一致することはできませんが、「food」の2つのoと一致することはできます。 |
{n、m} | mとnはどちらも非負の整数であり、n <= mです。少なくともn回一致し、最大m回一致します。 |
説明例
上記の正規要件を理解した後、必要に応じて正規表現を使用してSQLステートメントを記述できます。以下に、理解を深めるためのいくつかの小さな例(テーブル名:qipa350_user)を示します。
名前フィールドで「st」で始まるすべてのデータを検索します。
SELECT name FROM qipa350_user WHERE name REGEXP '^st';
名前フィールドで「ok」で終わるすべてのデータを検索します。
SELECT name FROM qipa350_user WHERE name REGEXP 'ok$';
名前フィールドに文字列「mar」を含むすべてのデータを検索します。
SELECT name FROM qipa350_user WHERE name REGEXP 'mar';
母音文字で始まる、または「ok」の文字列で終わる名前フィールドのすべてのデータを検索します。
SELECT name FROM qipa350_user WHERE name REGEXP '^[aeiou]|ok$';
0で始まるまたは5の文字列で終わるaccount_tokenフィールドのすべてのデータを検索します。
select * from pay_account where account_token REGEXP '^0|5$'
0で始まり5の文字列で終わるaccount_tokenフィールドのすべてのデータを検索します。
select account_token,account_balance from pay_account where account_token REGEXP '5$' and account_token REGEXP '^0'