sql >> データベース >  >> RDS >> Mysql

MySQLでのREGEXP_LIKE()関数のしくみ

    MySQLでは、 REGEXP_LIKE() 関数は、文字列が正規表現に一致するかどうかを判断するために使用されます。

    この関数は1を返します 文字列が指定された正規表現と一致する場合、および 0 そうでない場合。

    構文

    構文は次のようになります:

    REGEXP_LIKE(expr, pat[, match_type])

    expr 入力文字列であり、 pat 文字列をテストする正規表現です。

    オプションのmatch_type 引数を使用すると、正規表現を改良できます。たとえば、 match_typeを使用できます 大文字と小文字を区別する一致を指定するかどうか。

    例1-基本的な使用法

    基本的な例は次のとおりです。

    SELECT REGEXP_LIKE('Cat', '.*') Result;

    結果:

    +--------+
    | Result |
    +--------+
    |      1 |
    +--------+
    

    この場合、正規表現は任意のシーケンスの任意の文字を指定するため、もちろん一致します。この関数は1を返します 一致を示すため。

    例2–一致なし

    入力文字列が正規表現と一致しない例を次に示します。

    SELECT REGEXP_LIKE('Cat', 'b+') Result;

    結果:

    +--------+
    | Result |
    +--------+
    |      0 |
    +--------+
    

    この場合、正規表現は1つ以上の bが必要であることを指定します 任意の順序の文字。入力文字列にこの文字が含まれていないため、 0 返されます。

    例3–文字列の先頭を一致させる

    正規表現で、文字列が特定の文字で始まる必要があることを指定している例を次に示します。

    SELECT REGEXP_LIKE('Cat', '^Ca') Result;

    結果:

    +--------+
    | Result |
    +--------+
    |      1 |
    +--------+
    

    一致するものがない場合は、次のようになります。

    SELECT REGEXP_LIKE('Cat', '^Da') Result;

    結果:

    +--------+
    | Result |
    +--------+
    |      0 |
    +--------+
    

    例4–データベースクエリ

    この関数は、 WHEREで使用できます パターンを含む行のみを返すデータベースクエリの句:

    SELECT AlbumId, AlbumName
    FROM Albums
    WHERE REGEXP_LIKE(AlbumName, '^Power');

    結果:

    +---------+------------+
    | AlbumId | AlbumName  |
    +---------+------------+
    |       1 | Powerslave |
    |       2 | Powerage   |
    +---------+------------+
    

    完全な表は次のとおりです:

    SELECT AlbumId, AlbumName
    FROM Albums;

    結果:

    +---------+--------------------------+
    | AlbumId | AlbumName                |
    +---------+--------------------------+
    |       1 | Powerslave               |
    |       2 | Powerage                 |
    |       3 | Singing Down the Lane    |
    |       4 | Ziltoid the Omniscient   |
    |       5 | Casualties of Cool       |
    |       6 | Epicloud                 |
    |       7 | Somewhere in Time        |
    |       8 | Piece of Mind            |
    |       9 | Killers                  |
    |      10 | No Prayer for the Dying  |
    |      11 | No Sound Without Silence |
    |      12 | Big Swing Face           |
    |      13 | Blue Night               |
    |      14 | Eternity                 |
    |      15 | Scandinavia              |
    |      16 | Long Lost Suitcase       |
    |      17 | Praise and Blame         |
    |      18 | Along Came Jones         |
    |      19 | All Night Wrong          |
    |      20 | The Sixteen Men of Tain  |
    +---------+--------------------------+
    

    例5– match_type 引数

    一致タイプを決定するための追加の引数を指定できます。これにより、一致で大文字と小文字が区別されるかどうか、行末記号を含めるかどうかなどを指定できます。

    大文字と小文字を区別する一致と大文字と小文字を区別しない一致を指定する例を次に示します。

    SELECT 
      REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
      REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

    結果:

    +----------------+------------------+
    | Case-Sensitive | Case-Insensitive |
    +----------------+------------------+
    |              0 |                1 |
    +----------------+------------------+
    

    match_type 引数には次の文字を含めることができます:

    c
    大文字と小文字を区別するマッチング。
    i
    大文字と小文字を区別しないマッチング。
    m
    複数行モード。文字列内の行末記号を認識します。デフォルトの動作では、文字列式の最初と最後でのみ行末記号が一致します。
    n
    文字はラインターミネータと一致します。デフォルトはです。 行の終わりで停止するためのマッチング。
    u
    Unixのみの行末。 で終わる行として認識されるのは、改行文字のみです。 、 ^ 、および $ 一致演算子。

    その他の例

    MySQL REGEXPの例で、基本的な正規表現のその他の例を確認できます。 REGEXP REGEXP_LIKE()の同義語です 、したがって、例を同じ意味で使用できます。

    MySQLドキュメントの正規表現構文も参照してください。


    1. SQL Serverでマルチステートメントテーブル値関数(MSTVF)を作成する

    2. MariaDBの日付から1か月を引く

    3. SSHトンネル経由のPostgreSQL

    4. MariaDBでのSOUNDEX()のしくみ