Sqlite-glob-clause
SQLite-GLOB句
SQLiteの GLOB 演算子は、テキスト値のみをワイルドカードを使用したパターンと照合するために使用されます。 検索式がパターン式と一致する場合、GLOB演算子はtrue、つまり1を返します。 LIKE演算子とは異なり、GLOBは大文字と小文字を区別し、次のワイルドカードを指定するためのUNIXの構文に従います。
- アスタリスク記号(*)
- 疑問符(?)
アスタリスク記号(*)は、ゼロまたは複数の数字または文字を表します。 疑問符(?)は、単一の数字または文字を表します。
構文
以下は、**および?*の基本構文です。
SELECT FROM table_name
WHERE column GLOB 'XXXX*'
or
SELECT FROM table_name
WHERE column GLOB '*XXXX*'
or
SELECT FROM table_name
WHERE column GLOB 'XXXX?'
or
SELECT FROM table_name
WHERE column GLOB '?XXXX'
or
SELECT FROM table_name
WHERE column GLOB '?XXXX?'
or
SELECT FROM table_name
WHERE column GLOB '????'
ANDまたはOR演算子を使用して、 N 個の条件を組み合わせることができます。 ここで、XXXXは任意の数値または文字列値です。
例
次の表に、「*」と「?」の異なるLIKE句を持つWHERE部分を示すいくつかの例を示します。演算子。
Sr.No. | Statement & Description |
---|---|
1 |
WHERE SALARY GLOB '200'* 200で始まる値を検索します |
2 |
WHERE SALARY GLOB '*200'* 任意の位置に200がある値を検索します |
3 |
WHERE SALARY GLOB '?00'* 2番目と3番目の位置に00がある値を検索します |
4 |
WHERE SALARY GLOB '2??' 2で始まり、長さが3文字以上の値を検索します |
5 |
WHERE SALARY GLOB '*2' 2で終わる値を検索します |
6 |
WHERE SALARY GLOB '?2*3' 2番目の位置に2があり、3で終わる値を検索します |
7 |
WHERE SALARY GLOB '2???3' 2で始まり3で終わる5桁の数値の値を検索します |
実際の例を見てみましょう、次のレコードを持つCOMPANYテーブルを考えてみましょう-
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
以下は、AGEが2で始まるCOMPANYテーブルのすべてのレコードを表示する例です。
sqlite> SELECT * FROM COMPANY WHERE AGE GLOB '2*';
これにより、次の結果が生成されます。
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
以下は、ADDRESSのテキスト内にハイフン(-)が含まれるCOMPANYテーブルのすべてのレコードを表示する例です-
sqlite> SELECT * FROM COMPANY WHERE ADDRESS GLOB '*-*';
これにより、次の結果が生成されます。
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
6 Kim 22 South-Hall 45000.0