概要 :このチュートリアルでは、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つのワイルドカードを提供します。パーセント記号%
アンダースコア_
:
- パーセント記号
%
ワイルドカードは、0文字以上の任意のシーケンスに一致します。 - アンダースコア
_
ワイルドカードは任意の1文字に一致します。
パーセント記号%
ワイルドカードの例
s%
パーセント記号のワイルドカードを使用するパターン(%
)s
で始まるすべての文字列に一致します 例:son
およびso
。
%er
パターンは、er
で終わるすべての文字列に一致します peter
のように 、clever
、など。
そして%per%
パターンは、per
を含むすべての文字列と一致します percent
など およびpeeper
。
アンダースコア_
ワイルドカードの例
h_nt
パターンはhunt
と一致します 、hint
、など。__pple
パターンはtopple
と一致します 、supple
、tipple
、など。
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 year
Code 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% increase
Code language: Shell Session (shell)
このチュートリアルでは、SQLite LIKE
の使用方法を学びました。 2つのワイルドカード文字のパーセント記号(%
)を使用して、パターンマッチングに基づいてデータをクエリする演算子 )およびアンダースコア(_
。