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

MySQLでどのように機能しないか

    MySQLでは、NOT LIKEを使用できます LIKEの否定を実行します オペレーター。言い換えれば、NOT LIKE LIKEとは逆の結果を返します 。

    文字列が提供されたパターンと一致する場合、結果は0になります。 、それ以外の場合は1

    パターンは必ずしもリテラル文字列である必要はありません。この関数は、文字列式とテーブル列で使用できます。

    構文

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

    expr NOT LIKE pat [ESCAPE 'escape_char']

    expr 入力文字列であり、pat 文字列をテストするパターンです。

    オプションのESCAPE 句を使用すると、エスケープ文字を指定できます。デフォルトのエスケープ文字は\です 、したがって、これを変更する必要がない場合は、この句を省略できます。

    この演算子は、次のことを行うのと同じです。

    NOT (expr LIKE pat [ESCAPE 'escape_char'])

    例1-基本的な使用法

    SELECTでこの演算子を使用する方法の例を次に示します。 ステートメント:

    SELECT 'Charlie' NOT LIKE 'Char%';

    結果:

    +----------------------------+
    | 'Charlie' NOT LIKE 'Char%' |
    +----------------------------+
    |                          0 |
    +----------------------------+
    

    この場合、戻り値は0です。 これは、入力文字列がしたことを意味します 実際にパターンに一致します。

    例2– LIKEとの比較

    ここでは、LIKEと比較されています :

    SELECT 
      'Charlie' LIKE 'Char%' AS 'Like',
      'Charlie' NOT LIKE 'Char%' AS 'Not Like';

    結果:

    +------+----------+
    | Like | Not Like |
    +------+----------+
    |    1 |        0 |
    +------+----------+
    

    例3–同等の構文

    前述のように、NOT LIKE NOTを使用するのと同じです LIKEに対する論理演算子 オペレーター。意味は次のとおりです:

    SELECT 
      'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax',
      NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';

    結果:

    +-----------------+-------------------+
    | NOT LIKE syntax | Equivalent syntax |
    +-----------------+-------------------+
    |               0 |                 0 |
    +-----------------+-------------------+
    

    例4–データベースの例

    LIKE 演算子は、WHERE内でよく使用されます SELECTの句 データベースを照会するときのステートメント。したがって、NOT LIKE 同じように使用することができます。

    NOT LIKEを使用する場合 このようにして、結果をしないレコードのみに絞り込みます。 一致しますが、実際の結果が表示されます(1だけではありません) または0

    データベースクエリ内でこの演算子を使用する方法の例を次に示します。

    SELECT ArtistId, ArtistName
    FROM Artists
    WHERE ArtistName NOT LIKE 'B%';
    

    結果:

    +----------+------------------------+
    | ArtistId | ArtistName             |
    +----------+------------------------+
    |        1 | Iron Maiden            |
    |        2 | AC/DC                  |
    |        3 | Allan Holdsworth       |
    |        5 | Devin Townsend         |
    |        6 | Jim Reeves             |
    |        7 | Tom Jones              |
    |        8 | Maroon 5               |
    |        9 | The Script             |
    |       10 | Lit                    |
    |       12 | Michael Learns to Rock |
    |       13 | Carabao                |
    |       14 | Karnivool              |
    +----------+------------------------+
    

    この場合、名前がではないすべてのアーティストを返す単純なクエリでした。 Bの文字で始まります 。

    その表にあるアーティストの完全なリストは次のとおりです。

    SELECT ArtistId, ArtistName
    FROM Artists;
    

    結果:

    +----------+------------------------+
    | ArtistId | ArtistName             |
    +----------+------------------------+
    |        1 | Iron Maiden            |
    |        2 | AC/DC                  |
    |        3 | Allan Holdsworth       |
    |        4 | Buddy Rich             |
    |        5 | Devin Townsend         |
    |        6 | Jim Reeves             |
    |        7 | Tom Jones              |
    |        8 | Maroon 5               |
    |        9 | The Script             |
    |       10 | Lit                    |
    |       11 | Black Sabbath          |
    |       12 | Michael Learns to Rock |
    |       13 | Carabao                |
    |       14 | Karnivool              |
    |       15 | Birds of Tokyo         |
    |       16 | Bodyjar                |
    +----------+------------------------+
    

    したがって、NOTを削除すると (つまり、LIKEを使用するだけです )次の結果が得られます:

    SELECT ArtistId, ArtistName
    FROM Artists
    WHERE ArtistName LIKE 'B%';
    

    結果:

    +----------+----------------+
    | ArtistId | ArtistName     |
    +----------+----------------+
    |        4 | Buddy Rich     |
    |       11 | Black Sabbath  |
    |       15 | Birds of Tokyo |
    |       16 | Bodyjar        |
    +----------+----------------+
    

    例5–バックスラッシュ文字を使用したエスケープ

    バックスラッシュ文字(\ )は、任意のワイルドカード文字(_)をエスケープするために使用できます および% )。エスケープ文字を使用した場合と使用しない場合のこのような検索の例を次に示します。

    SELECT 
      'usr+123' NOT LIKE 'usr_123' AS 'Without escape',
      'usr+123' NOT LIKE 'usr\_123' AS 'With escape';

    結果:

    +----------------+-------------+
    | Without escape | With escape |
    +----------------+-------------+
    |              0 |           1 |
    +----------------+-------------+
    

    例6– ESCAPE 条項

    ESCAPEを使用することもできます 独自のカスタムエスケープ文字を指定する句。次に例を示します:

    SELECT 
      'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1',
      'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';

    結果:

    +----------+----------+
    | String 1 | String 2 |
    +----------+----------+
    |        0 |        1 |
    +----------+----------+
    

    例7–数式

    この演算子は数式で使用できます。次に例を示します:

    SELECT 
      1234 NOT LIKE '12%',
      1234 NOT LIKE '12_';
    

    結果:

    +---------------------+---------------------+
    | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' |
    +---------------------+---------------------+
    |                   0 |                   1 |
    +---------------------+---------------------+
    
    >
    1. Oracle DB Server + APEX + ORDS + JasperReportsをゼロから(パート1)

    2. Webrickの応答は非常に遅いです。それをスピードアップする方法は?

    3. 低RTOでのディザスタリカバリのための複数の遅延レプリケーションスレーブ

    4. 上級ユーザー向けのSQLServer2016での全文検索の実装