Skip to main content

SQLite GLOB:测试字符串是否与UNIX模式匹配

SQLite GLOB操作符简介

GLOB运算符与LIKE运算符类似。GLOB运算符确定字符串是否与特定模式匹配。

与LIKE运算符不同,GLOB运算符区分大小写,并使用UNIX通配符。此外,GLOB模式没有转义字符。

下面显示了与GLOB运算符一起使用的通配符:

除这些通配符外,还可以使用列表通配符[]匹配字符列表中的一个字符。例如[xyz]匹配任何单个x、y或z字符。

列表通配符还允许一系列字符,例如,[a-z]匹配从a到z的任何单个小写字符。[a-zA-Z0-9]模式匹配任何单个字母数字字符,包括小写和大写。

此外,可以使用列表开头的字符“^”匹配列表中除任何字符以外的任何字符。例如,0-9模式匹配除数字字符以外的任何单个字符。

SQLite GLOB示例

下面的语句查找名称以string Man开头的曲目。模式Man*匹配任何以Man开头的字符串。

SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB 'Man*';

试试看

SQLite GLOB asterisk wildcard example

下面的语句得到了以Man结尾的曲目。模式*Man匹配任何以Man结尾的字符串。

SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*Man';

试试看

SQLite GLOB asterisk wildcard ending example

下面的查询将查找名称以任何单个字符(?)开头的曲目,后跟字符串ere,然后是任意数量的字符(*)。

SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '?ere*';

试试看

SQLite GLOB asterisk wildcard containing example

要查找名称包含数字的曲目,可以使用列表通配符[0-9],如下所示:

SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[1-9]*';

试试看

SQLite GLOB list wildcard example

或者,要查找名称中不包含任何数字的曲目,请将字符“^”放在列表的开头:

SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[^1-9]*';

试试看

SQLite GLOB list wildcard characters example

下面的语句查找名称以数字结尾的曲目。

SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[1-9]';

试试看

SQLite GLOB list wildcard numbers example

在本教程中,您学习了如何使用SQLite GLOB运算符来测试字符串是否匹配特定模式。