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

RLIKEがMariaDBでどのように機能するか

    MariaDBでは、NOT RLIKE RLIKEの否定です オペレーター。

    言い換えれば、いつでもRLIKE 演算子は1を返します 、NOT RLIKE 0を返します 。

    構文

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

    expr NOT RLIKE pat

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

    これは、次のことを行うのと同じです:

    NOT (expr RLIKE pat)

    これをSELECTで使用する例を次に示します。 ステートメント:

    SELECT 'Coffee' NOT RLIKE '^C.*e$';

    結果:

    +-----------------------------+
    | 'Coffee' NOT RLIKE '^C.*e$' |
    +-----------------------------+
    |                           0 |
    +-----------------------------+

    ここで、入力文字列がCで始まる場合、パターンは一致します。 eで終わります 。ありますが、NOT RLIKEを使用しているためです 、否定的な結果が得られます(0

    上記のステートメントは、これを行うのと同じです:

    SELECT NOT ('Coffee' RLIKE '^C.*e$');

    結果:

    +-------------------------------+
    | NOT ('Coffee' RLIKE '^C.*e$') |
    +-------------------------------+
    |                             0 |
    +-------------------------------+

    RLIKEとの比較

    ここでは、RLIKEの結果を比較します NOT RLIKE

    SELECT 
      'Coffee' RLIKE '^C.*e$' AS "RLIKE",
      'Coffee' NOT RLIKE '^C.*e$' AS "NOT RLIKE";

    結果:

    +-------+-----------+
    | RLIKE | NOT RLIKE |
    +-------+-----------+
    |     1 |         0 |
    +-------+-----------+

    肯定的な結果

    前の例では、0になりました。 NOT RLIKEの場合 、文字列 did 実際にパターンに一致します。 1を取得する例を次に示します。 、これは、文字列がないことを示します。 一致:

    SELECT 
      'Funny' RLIKE '^C.*e$' AS "RLIKE",
      'Funny' NOT RLIKE '^C.*e$' AS "NOT RLIKE";

    結果:

    +-------+-----------+
    | RLIKE | NOT RLIKE |
    +-------+-----------+
    |     0 |         1 |
    +-------+-----------+
    

    代替案

    MariaDBには、基本的に同じことを行う多くの関数と演算子が含まれています。これは、NOT RLIKEにも当てはまります。 。

    1. RLIKE REGEXPの同義語です オペレーター。
    2. NOT RLIKE NOT REGEXPと同等です 。
    3. RLIKE およびREGEXP NOTを使用するだけで無効にできます 論理演算子。

    したがって、次のすべてが同等です。

    expr NOT RLIKE pat
    expr NOT REGEXP pat
    NOT (expr RLIKE pat)
    NOT (expr REGEXP pat)

    そして、これがデモンストレーションの例です:

    SELECT 
      'Car' NOT RLIKE '^C' AS "Result 1",
      'Car' NOT REGEXP '^C' AS "Result 2",
      NOT ('Car' RLIKE '^C') AS "Result 3",
      NOT ('Car' REGEXP '^C') AS "Result 4";

    結果:

    +----------+----------+----------+----------+
    | Result 1 | Result 2 | Result 3 | Result 4 |
    +----------+----------+----------+----------+
    |        0 |        0 |        0 |        0 |
    +----------+----------+----------+----------+
    >
    1. MySQLはtimediff出力を日、時、分、秒の形式に変換します

    2. SQL2008RDLファイルをSQL2005に変換する

    3. SQL-転置する方法は?

    4. GROUP BY+CASEステートメント