SQLite – GLOB子句
SQLite GLOB操作符用于仅匹配文本模式使用通配符。如果搜索表达式可以匹配模式表达式,GLOB操作符将返回true,这是1。与LIKE不同,GLOB是大小写敏感的,它遵循语法的UNIX指定以下通配符。
- The asterisk sign (*)
- The question mark (?)
星号符号代表零个或多个数字或字符。的吗?代表一个数字或字符。
语法:
*和? 基本语法如下:
SELECT FROM table_name
WHERE column GLOB ‘XXXX*’
or
SELECT FROM table_name
WHERE column GLOB ‘*XXXX*’
or
SELECT FROM table_name
WHERE column GLOB ‘XXXX?’
or
SELECT FROM table_name
WHERE column GLOB ‘?XXXX’
or
SELECT FROM table_name
WHERE column GLOB ‘?XXXX?’
or
SELECT FROM table_name
WHERE column GLOB ‘????’
您可以使用N个条件结合使用AND和OR操作符。这里XXXX可以任何数字或字符串值。
例子:
这里有一些例子显示WHERE part having different LIKE clause with ‘*’ and ‘?’ 操作符::
语句 | 描述 |
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 table有以下记录:
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 table,年龄从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
下面是一个例子,这将显示所有记录从公司表地址将文本中的连字符(-):
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