SQLite | データ検索 | GLOBによるパターンマッチ

GLOBはUnix形式のワイルドカードを使い、大文字と小文字を区別してパターンマッチを行う。

SELECT columns FROM table_name WHERE column GLOB pattern;
パターン 意味
* 任意の0文字以上
? 任意の1文字
[abc] 集合内の1文字
[a-d] 範囲内の1文字
[^abc] 集合にない1文字

a*babaoneba?baxb[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 '*[*]*';