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

SQLite LIKE

    概要 :このチュートリアルでは、SQLite LIKEを使用してパターンマッチングに基づいてデータをクエリする方法を学習します。 オペレーター。

    SQLite LIKEの紹介 オペレーター

    クエリする完全なキーワードが正確にわからない場合があります。たとえば、最も好きな曲にelevatorという単語が含まれていることを知っているかもしれません。 でも名前は正確にはわかりません。

    部分的な情報に基づいてデータをクエリするには、LIKEを使用します WHEREの演算子 SELECTの句 次のようなステートメント:

    SELECT
    	column_list
    FROM
    	table_name
    WHERE
    	column_1 LIKE pattern;Code language: SQL (Structured Query Language) (sql)

    LIKEも使用できることに注意してください WHEREの演算子 DELETEなどの他のステートメントの句 およびUPDATE

    SQLiteは、パターンを構築するための2つのワイルドカードを提供します。パーセント記号% アンダースコア_

    1. パーセント記号% ワイルドカードは、0文字以上の任意のシーケンスに一致します。
    2. アンダースコア_ ワイルドカードは任意の1文字に一致します。

    パーセント記号% ワイルドカードの例

    s% パーセント記号のワイルドカードを使用するパターン(%sで始まるすべての文字列に一致します 例:son およびso

    %er パターンは、erで終わるすべての文字列に一致します peterのように 、clever 、など。

    そして%per% パターンは、perを含むすべての文字列と一致します percentなど およびpeeper

    アンダースコア_ ワイルドカードの例

    h_nt パターンはhuntと一致します 、hint 、など。__pple パターンはtoppleと一致します 、suppletipple 、など。
    SQLite LIKEに注意してください 演算子は大文字と小文字を区別しません。 "A" LIKE "a"を意味します 本当です。

    ただし、ASCII範囲にないUnicode文字の場合、LIKE 演算子では大文字と小文字が区別されます。例:"Ä" LIKE "ä" は偽です。
    LIKEを作成したい場合 演算子は大文字と小文字を区別して機能するため、次のPRAGMAを使用する必要があります。

    PRAGMA case_sensitive_like = true;Code language: SQL (Structured Query Language) (sql)

    SQLite LIKE

    テーブルtracksを使用します デモンストレーション用のサンプルデータベースにあります。

    名前がWildで始まるトラックを検索するには リテラル文字列、パーセント記号%を使用します パターンの最後にワイルドカードがあります。

    SELECT
    	trackid,
    	name	
    FROM
    	tracks
    WHERE
    	name LIKE 'Wild%'Code language: SQL (Structured Query Language) (sql)

    試してみてください

    名前がWildで終わるトラックを検索するには つまり、%を使用します パターンの先頭にあるワイルドカード。

    SELECT
    	trackid,
    	name
    FROM
    	tracks
    WHERE
    	name LIKE '%Wild'Code language: SQL (Structured Query Language) (sql)

    試してみてください

    名前にWildが含まれているトラックを検索するには リテラル文字列、%を使用します パターンの最初と最後のワイルドカード:

    SELECT
    	trackid,
    	name	
    FROM
    	tracks
    WHERE
    	name LIKE '%Wild%';Code language: SQL (Structured Query Language) (sql)

    試してみてください

    次のステートメントは、名前に次の文字が含まれているトラックを検索します:0個以上の文字(% )、続いてBr 、その後に文字(_ )、続いてwn 、およびそれに続く0個以上の文字(%

    SELECT
    	trackid,
    	name
    FROM
    	tracks
    WHERE
    	name LIKE '%Br_wn%';Code language: SQL (Structured Query Language) (sql)

    試してみてください

    SQLite LIKE ESCAPEを使用 条項

    一致させたいパターンに%が含まれている場合 または_ 、オプションのESCAPEではエスケープ文字を使用する必要があります 次のような条項:

    column_1 LIKE pattern ESCAPE expression;
    Code language: SQL (Structured Query Language) (sql)

    ESCAPEを指定する場合 句、LIKE 演算子はexpressionを評価します ESCAPEに続く 単一文字またはエスケープ文字で構成される文字列へのキーワード。

    次に、このエスケープ文字をパターンで使用して、リテラルのパーセント記号(%)またはアンダースコア(_)を含めることができます。 )。 LIKE 演算子はパーセント記号を評価します(% )またはアンダースコア(_ )これは、ワイルドカード文字ではなく、リテラル文字列としてエスケープ文字の後に続きます。

    文字列10%と一致させたいとします。 テーブルの列にあります。ただし、SQLiteはパーセント記号%を解釈します ワイルドカード文字として。したがって、このパーセント記号%をエスケープする必要があります エスケープ文字の使用:

    column_1 LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

    この式では、LIKE 演算子は、最初の%記号と最後の%パーセント記号をワイルドカードとして解釈し、2番目のパーセント記号をリテラルのパーセント記号として解釈します。

    /、@、$などの他の文字をエスケープ文字として使用できることに注意してください。

    次の例を考えてみましょう:

    まず、テーブルtを作成します 1つの列があります:

    CREATE TABLE t(
    	c TEXT
    );Code language: SQL (Structured Query Language) (sql)

    次に、テーブルtにいくつかの行を挿入します :

    INSERT INTO t(c)
    VALUES('10% increase'),
    	('10 times decrease'),
    	('100% vs. last year'),
    	('20% increase next year');Code language: SQL (Structured Query Language) (sql)

    次に、tからデータをクエリします テーブル:

    SELECT * FROM t;Code language: SQL (Structured Query Language) (sql)
    c                     
    ----------------------
    10% increase          
    10 times decrease     
    100% vs. last year    
    20% increase next yearCode language: Shell Session (shell)

    第4に、cの値が 列に10%が含まれています リテラル文字列:

    SELECT c 
    FROM t 
    WHERE c LIKE '%10%%';Code language: SQL (Structured Query Language) (sql)

    ただし、c列の値に10が含まれる行を返します:

    c                 
    ------------------
    10% increase      
    10 times decrease 
    100% vs. last year

    第5に、正しい結果を得るには、ESCAPEを使用します 次のクエリに示されている句:

    SELECT c 
    FROM t 
    WHERE c LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

    結果セットは次のとおりです。

    c           
    ------------
    10% increaseCode language: Shell Session (shell)

    このチュートリアルでは、SQLite LIKEの使用方法を学びました。 2つのワイルドカード文字のパーセント記号(%)を使用して、パターンマッチングに基づいてデータをクエリする演算子 )およびアンダースコア(_


    1. 最後に挿入された行から値を取得するにはどうすればよいですか?

    2. PDOException SQLSTATE[HY000][2002]そのようなファイルまたはディレクトリはありません

    3. MySQLに接続するようにTomcatを構成する方法

    4. SpringBootアプリケーションがHikariでスタックします-Pool-1-開始しています...