SQLite | データ検索 | GLOBによるパターンマッチ
GLOBはUnix形式のワイルドカードを使い、大文字と小文字を区別してパターンマッチを行う。
SELECT columns FROM table_name WHERE column GLOB pattern;
| パターン | 意味 |
|---|---|
* |
任意の0文字以上 |
? |
任意の1文字 |
[abc] |
集合内の1文字 |
[a-d] |
範囲内の1文字 |
[^abc] |
集合にない1文字 |
a*bはabやaoneb、a?bはaxb、[mk]*はmまたはkで始まる文字列に一致する。
create table user (id integer, screenname text);
insert into user values (1, 'Blogger');
insert into user values (2, 'rondobell');
insert into user values (3, 'blue*star');
insert into user values (4, '2525');
insert into user values (5, 'Star');
select * from user where screenname glob 'b*';
最後のクエリはblue*starだけを返す。大文字と小文字の両方を対象にするには集合を使う。
select * from user where screenname glob '[bB]*';
select * from user where screenname glob '[a-zA-Z]*';
特殊文字のエスケープ
*、?、[、]を文字として検索する場合は角括弧で囲む。次のクエリはリテラルの*を含むblue*starを返す。
select * from user where screenname glob '*[*]*';