SQLite - GLOB 子句



SQLite 的 GLOB 運算子用於使用萬用字元將文字值與模式進行匹配。如果搜尋表示式可以與模式表示式匹配,則 GLOB 運算子將返回 true(即 1)。與 LIKE 運算子不同,GLOB 區分大小寫,並遵循 UNIX 的語法來指定以下萬用字元。

  • 星號 (*)
  • 問號 (?)

星號 (*) 表示零個或多個數字或字元。問號 (?) 表示單個數字或字元。

語法

以下是 *? 的基本語法。

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 '????'

您可以使用 AND 或 OR 運算子組合 N 個條件。這裡,XXXX 可以是任何數字或字串值。

示例

下表列出了幾個示例,這些示例顯示了 WHERE 部分包含使用 '*' 和 '?' 運算子的不同 GLOB 子句。

序號 語句 & 描述
1

WHERE SALARY GLOB '200*'

查詢以 200 開頭的任何值

2

WHERE SALARY GLOB '*200*'

查詢在任何位置包含 200 的任何值

3

WHERE SALARY GLOB '?00*'

查詢在第二和第三位置包含 00 的任何值

4

WHERE SALARY GLOB '2??'

查詢以 2 開頭且至少 3 個字元長的任何值

5

WHERE SALARY GLOB '*2'

查詢以 2 結尾的任何值

6

WHERE SALARY GLOB '?2*3'

查詢在第二位置包含 2 且以 3 結尾的任何值

7

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
廣告