开发学院

您的位置:首页>教程>正文

教程正文

SQLite GLOB 命令

SQLite GLOB 命令

  GLOB用于仅将文本值与使用通配符的模式匹配。如果搜索表达式可以与模式表达式匹配,GLOB运算符将返回true,即1。与LIKE运算符不同,GLOB区分大小写,它遵循UNIX的语法来指定以下通配符。

  *符号和?符号

  星号(*)表示零个或多个数字或字符。问号(?)表示单个数字或字符。

语法

  下面是GLOB结合 *和?的基本用法:

SELECT FROM table_name
WHERE column GLOB 'XXXX*'
或
SELECT FROM table_name
WHERE column GLOB '*XXXX*'
或
SELECT FROM table_name
WHERE column GLOB 'XXXX?'
或
SELECT FROM table_name
WHERE column GLOB '?XXXX'
或
SELECT FROM table_name
WHERE column GLOB '?XXXX?'
或
SELECT FROM table_name
WHERE column GLOB '????'

  可以使用AND或OR运算符组合N个条件。这里,XXXX可以是任何数字或字符串值。

例子

命令
解释
WHERE SALARY GLOB '200*'查找以200开头的任何值
WHERE SALARY GLOB '*200*'查找在任何位置具有200的任何值
WHERE SALARY GLOB '?00*'查找第二个和第三个位置中具有00的任何值
WHERE SALARY GLOB '2??'查找以2开头且长度至少为3个字符的任何值
WHERE SALARY GLOB '*2'查找以2结尾的任何值
WHERE SALARY GLOB '?2*3'查找在第二个位置具有2并以3结尾的任何值
WHERE SALARY GLOB '2???3'查找以2开头、以3结尾的五位数中的任何值

  让我们做一些实际的例子, 假设COMPANY包含如下数据:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

  下面的例子,它将显示COMPANY表中AGE从2开始的所有记录。

sqlite> SELECT * FROM COMPANY WHERE AGE  GLOB '2*';

  下面是结果:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

  下面的例子,它将显示COMPANY表中ADDRESS中包含一个连字符(-)的所有记录:

sqlite> SELECT * FROM COMPANY WHERE ADDRESS  GLOB '*-*';

  下面是结果:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
6           Kim         22          South-Hall  45000.0