概要 :このチュートリアルでは、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 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つのワイルドカード文字のパーセント記号(%)を使用して、パターンマッチングに基づいてデータをクエリする演算子 )およびアンダースコア(_ 。