SQLite GLOB子句


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表中選擇fees2開頭所有記錄:

SELECT * FROM student WHERE fees  GLOB '2*';

執行上面程式碼,輸出結果如下 -

例2:

student表中選擇address包含an字元所有記錄:

SELECT * FROM student WHERE address  GLOB '*an*';

執行上面程式碼,輸出結果如下 -