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

例を使用したSQLiteLike()関数

    SQLite like() 関数を使用すると、文字列を特定のパターンと比較できます。必要に応じてエスケープ文字を指定することもできます。

    like()を使用できます LIKEの代替として機能します 演算子(Y LIKE X [ESCAPE Z]を実行できるようにします 式)。

    構文

    次のいずれかを使用できます:

    like(X,Y)
    like(X,Y,Z)
    • X パターンです
    • Y 文字列です
    • Z オプションのエスケープ文字です

    基本的な例

    次の表を見てください:

    CatId       CatName   
    ----------  ----------
    1           Brush     
    2           Flutter   
    3           100%Fluff 
    4           100$Fluff 

    次のコードを実行して、猫の名前が文字Fで始まるすべての行を返すことができます。

    SELECT * FROM Cats 
    WHERE like('F%', CatName);

    結果:

    CatId       CatName   
    ----------  ----------
    3           Flutter   

    この例では、%を使用しました 任意の数の文字(ゼロ文字を含む)が続く可能性があり、任意の文字である可能性があることを示すワイルドカード文字。

    アンダースコア(_)文字

    アンダースコア(_)を使用する例を次に示します。 ) キャラクター。このワイルドカード文字は、1文字と完全に一致します。それ以上でもそれ以下でもありません。

    SELECT * FROM Cats 
    WHERE like('Br_sh', CatName);

    結果:

    CatId       CatName   
    ----------  ----------
    1           Brush     

    前述のように、1つの文字にのみ一致します。そのため、私のデータに基づくと、次のことはできず、一致するものは期待できません。

    SELECT * FROM Cats 
    WHERE like('Br_', CatName);

    結果:

     

    (結果がないため、これは意図的に空白になっています。)

    エスケープ文字

    必要に応じて文字をエスケープすることもできます。これを行うには、3番目のパラメーターとしてエスケープ文字を追加します(また、エスケープする文字の前にエスケープ文字を追加します)。

    SELECT * FROM Cats 
    WHERE like('100\%F%', CatName, '\');

    結果:

    CatId       CatName   
    ----------  ----------
    3           100%Fluff 

    この場合、パーセント記号(%)をエスケープしました )。名前に実際のパーセント記号が含まれている猫を探していたので、これを行いました。実際、この場合、私は非常に具体的な猫の名前を探していました– 100%Fで始まる猫の名前 。

    それを回避していなかったとしたら、それはワイルドカードとして使用され、結果は異なっていたでしょう。

    エスケープ文字を削除すると、次のようになります。

    SELECT * FROM Cats 
    WHERE like('100%F%', CatName);

    結果:

    CatId       CatName   
    ----------  ----------
    3           100%Fluff 
    4           100$Fluff 

    ブール値を返す

    like()を使用できます 0を返す関数 または1 、一致するかどうかによって異なります。

    これは、すべての行を返す必要がある場合に便利ですが、条件に一致するかどうかを示すフラグもあります。

    これが例です。

    SELECT 
      CatName,
      like('F%', CatName) 
    FROM Cats;

    結果:

    CatName     CatName LIKE 'F%'
    ----------  ------------------
    Brush       0                 
    Flutter     1                 
    100%Fluff   0                 
    100$Fluff   0                 

    この場合、1つの行だけが基準に一致しましたが、それでも他のすべての行を表示する必要がありました。

    大文字と小文字の区別

    デフォルトでは、SQLite like() 関数はASCII文字では大文字と小文字を区別しません。これは、パターンで使用する大文字と小文字に関係なく、大文字と小文字に一致することを意味します。

    case_sensitive_likeを使用できます ASCII範囲で大文字と小文字を区別する一致を実行するPRAGMAステートメント。

    例については、SQLiteのLIKE演算子で大文字と小文字を区別する方法を参照してください。その記事はLIKEのために書かれています 演算子ですが、like()にも適用されます 機能。


    1. NULLの複雑さ–パート2

    2. PSQLException:現在のトランザクションは中止され、トランザクションブロックが終了するまでコマンドは無視されます

    3. データベースの効率を高めるための主な方法

    4. SQL Serverでポリモーフィックアソシエーションを実装するための最良の方法は何ですか?