SQLite 关键字

SQLite NOT GLOB 关键字是 GLOB 关键字的否定。 GLOB 关键字在 WHERE 子句中使用,用于在指定列中搜索指定模式。与 GLOB 或 NOT GLOB 关键字结合使用的通配符如下:

注意:与 LIKE 关键字,GLOB 区分大小写,它遵循 UNIX 语法来指定给定的通配符。

SQLite 中的通配符

符号说明示例
*表示零个、一个或多个字符。'J*'表示以"J"开头的值,例如 - John、Jo 和 Jack 等。
?代表一个字符。'?o*' 表示第二个位置有"o"的值,例如 - John、Jo 和 Journey 等。

语法

在 SQLite 中使用 GLOB 和 NOT GLOB 关键字的语法如下:

/* 使用 GLOB 关键字 */
SELECT column1, column2, ...
FROM table_name
WHERE column GLOB pattern;

/* 使用 NOT GLOB 关键字 */
SELECT column1, column2, ...
FROM table_name
WHERE column NOT GLOB pattern; 

下表描述了与 GLOB 关键字一起使用的模式,并使用 (*)和 (?)。

模式描述
'J*'以"J"开头的值。
'*n'以"n"结尾。
'*oh*'任意位置有"oh"的值。
'?o*'第二个位置有"o"的值。
'J?*'以"J"开头且至少包含 2 个字符的值。
'J??*'A以"J"开头且至少包含 3 个字符的值。
'J*n'以"J"开头并结束的值

示例:

考虑一个数据库,其中包含一个名为 Employee 的表,其中以下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

使用*通配符:选择Employee的所有记录Name 以"Jo"开头的表,查询如下。

SELECT * FROM Employee
WHERE Name GLOB 'Jo*'; 

这将产生如下所示的结果:

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800

将 * 通配符与 NOT GLOB 关键字一起使用:NOT GLOB 关键字用作 GLOB 关键字的否定。例如,要选择 Employee 表中 Name 不以"Jo"开头的所有记录,可以使用以下查询:

SELECT * FROM Employee
WHERE Name NOT GLOB 'Jo*'; 

这将产生如下所示的结果:

EmpIDNameCityAgeSalary
2MarryNew York242750
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

使用?通配符:要选择Employee表中Name第二个字符包含"o"的所有记录,查询如下。

SELECT * FROM Employee
WHERE Name GLOB '?o*'; 

上述代码的结果将是:

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800

使用?带有 NOT GLOB 关键字的通配符:要选择 Employee 表中 Name 不包含"o"作为第二个字符的所有记录,查询如下:

SELECT * FROM Employee
WHERE Name NOT GLOB '?o*'; 

上述代码的结果将是:

EmpIDNameCityAgeSalary
2MarryNew York242750
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800