SQLite GLOB
操作符通过使用通配符将模式表达式与文本值匹配, 当搜索表达式与模式表达式匹配时,GLOB
运算符将返回真,该值为:1
。
GLOB
运算符遵循UNIX的语法,使用指定以下通配符。
*
): 符号表示零个或多个数字或字符。?
): 符号表示单个数字或字符。语法:
星号(*
)符号的语法:
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 '????'
假设有一个名为“STUDENT
”的表,并具有以下数据:
sqlite> SELECT * FROM STUDENT; 1|Maxsu|27|Shengzheng|20000.0 2|Minsu|25|Beijing|15000.0 3|Avgsu|23|Shanghai|2000.0 4|Linsu|25|Guangzhou|65000.0 5|Sqlsu|26|Hainan|25000.0 6|Javasu|21|Shengzheng|18000.0 sqlite>
在下面这些示例中,WHERE语句具有不同的BLOB子句,带有’*
‘和’?
‘运算符:
语句 | 描述 |
---|---|
WHERE FEES GLOB '200*' |
查找以200 开头的任何值 |
WHERE FEES GLOB '*200*' |
查找包含200 的任何值 |
WHERE FEES GLOB '?00*' |
查找在第二和第三个位置是00 的任何值 |
WHERE FEES GLOB '2??' |
查找以2 开头并且长度至少为3 个字符的值 |
WHERE FEES GLOB'*2' |
查找以2结尾的任何值 |
WHERE FEES GLOB '?2*3' |
查找具有第二个位置是2 并以3 结尾的任何值 |
WHERE FEES GLOB '2???3' |
查找以2 开头并以3 结尾的五位数字的任何值 |
例1:
从student
表中选择fees
以2
开头所有记录:
SELECT * FROM student WHERE fees GLOB '2*';
执行上面代码,输出结果如下 -
例2:
从student
表中选择address
包含an
字符所有记录:
SELECT * FROM student WHERE address GLOB '*an*';
执行上面代码,输出结果如下 -