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 的表,其中以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
使用*通配符:选择Employee的所有记录Name 以"Jo"开头的表,查询如下。
SELECT * FROM Employee
WHERE Name GLOB 'Jo*';
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
将 * 通配符与 NOT GLOB 运算符一起使用:NOT GLOB 运算符用作 GLOB 运算符的否定。例如,要选择 Employee 表中 Name 不以"Jo"开头的所有记录,可以使用以下查询:
SELECT * FROM Employee
WHERE Name NOT GLOB 'Jo*';
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
使用?通配符:要选择Employee表中Name第二个字符包含"o"的所有记录,查询如下。
SELECT * FROM Employee
WHERE Name GLOB '?o*';
上述代码的结果将是:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
使用?带 NOT GLOB 运算符的通配符:要选择 Employee 表中 Name 不包含"o"作为第二个字符的所有记录,查询如下:
SELECT * FROM Employee
WHERE Name NOT GLOB '?o*';
上述代码的结果将是:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |