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

SQLでLIKEを使用する方法

    問題:

    文字列のパターンに一致する部分文字列を見つけたい。

    例:

    私たちのデータベースには、次の列にデータがあるcustomerという名前のテーブルがあります:idfirst_namelast_name 、およびcity

    id first_name last_name 都市
    1 アラン ワトソン マドリード
    2 リサ シンガポール
    3 ローラ ウィリアムズ シアトル
    4 ミラノ レンガ ソウル

    SQLでのパターンマッチングの例をいくつか見てみましょう。

    例1:

    都市名が文字「S」で始まる各顧客の名、姓、都市を表示してみましょう。

    解決策:

    SELECT last_name, first_name, city  
    FROM customer
    WHERE city LIKE 'S%';
    
    last_name first_name 都市
    リサ S インガポア
    ミラノ レンガ S eoul
    ローラ ウィリアムズ S 食べる

    ゼロ個以上の不明な文字を表す%ワイルドカードを使用しました。このワイルドカードは、文字列のどこでも使用できます。

    例2:

    都市名に正確に5文字が含まれている各顧客の名、姓、都市を表示してみましょう。

    解決策:

    SELECT last_name, first_name, city  
    FROM customer
    WHERE city LIKE '_____';
    

    結果は次のとおりです。

    last_name first_name 都市
    ミラノ レンガ ソウル

    アンダースコアワイルドカードは、単一の不明な文字を表すために使用できます。したがって、そのうちの5つを連続して使用することにより、5文字の長さのすべての文字列を表すことができます。この例では、その説明に一致する唯一の都市はソウルです。

    例3:

    都市が文字「S」で始まり、最後から3番目の文字が文字「o」である各顧客の名、姓、および都市を表示してみましょう。

    解決策:

    SELECT last_name, first_name, city  
    FROM customer
    WHERE city LIKE 'S%o__';
    

    結果は次のとおりです。

    last_name first_name 都市
    リサ S ingap o re
    ミラノ レンガ S e o ul

    クエリは2つのレコードのみを返しました: SのLisaBlack ingap o SのreとMilanBrick e o ul。これらの都市は、指定されたパターンに一致します。ここでは、両方のワイルドカードを組み合わせて、より具体的なパターンを生成しました。大文字の「S」で始まり、最後から3番目の文字が小文字の「o」である限り、その後に任意の数の他の文字を含むすべての文字列です。 '

    ディスカッション:

    文字列が特定のパターンに一致するレコードを選択する場合は、LIKEを使用できます。 WHEREの条件としての句 句。 WHEREの後 、列の名前をリストします(例:city )の後にLIKE 文字列パターンを指定する句(例:'S%o__' )検索します。

    例で見たように、ワイルドカードと呼ばれる2つの特殊文字を使用できます。 不明な文字を表すには:

    • 「%」ワイルドカードは0個以上の文字を示します。
    • 「_」ワイルドカードは任意の1文字を示します。

    これらのワイルドカードを組み合わせて、非常に強力な結果を得ることができます。複数のLIKEをチェーンすることもできます 調子。最後に、NOTを使用できます しない文字列を検索する演算子 与えられたパターンに一致します。


    1. 既存のRailsアプリをherokuに移動するにはどうすればよいですか? (sqliteからpostgresへ)

    2. LOAD_FILEを使用してファイルをMySQLBLOBにロードする方法は?

    3. 複数の行を更新するときにNULLタイプをキャストする

    4. PostgreSQLLIKEクエリのパフォーマンスのバリエーション