SQLite 函数

SQLite GLOB() 函数在 WHERE 子句中使用来搜索指定列中的指定模式。

  • GLOB(X,Y) 函数用于实现"Y GLOB X"表达式。
  • 可以使用 NOT 关键字使用此函数来实现"NOT GLOB"表达式。
注意:与LIKE() 函数,GLOB() 区分大小写,它遵循 UNIX 语法来指定给定的通配符。

与该函数结合使用的通配符如下:

SQLite 中的通配符

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

语法

在SQLite中使用GLOB()函数的语法如下:

/* Using GLOB() function */
SELECT column1, column2, ...
FROM table_name
WHERE GLOB(pattern, column);

/* Using NOT GLOB() function */
SELECT column1, column2, ...
FROM table_name
WHERE NOT GLOB(pattern, column);

下表描述了与 GLOB() 函数一起使用的模式,并使用 (%) 和 (_)。

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

示例:

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

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

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

SELECT * FROM Employee
WHERE GLOB('Jo*', Name);

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

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800

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

SELECT * FROM Employee
WHERE NOT GLOB('Jo*', Name);

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

EmpIDNameCityAgeSalary
2MarryNew York242750
4KimAmsterdam303100
5RameshNew Delhi 283000
6HuangBeijing 282800

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

SELECT * FROM Employee
WHERE GLOB('?o*', Name);

上述代码的结果将是:

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800

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

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

上述代码的结果将是:

EmpIDNameCityAgeSalary
2MarryNew York242750
4KimAmsterdam303100
5RameshNew Delhi283000
6Huang Beijing282800