SQLite - ข้อ GLOB

SQLite GLOBตัวดำเนินการใช้เพื่อจับคู่เฉพาะค่าข้อความกับรูปแบบโดยใช้สัญลักษณ์แทน หากนิพจน์การค้นหาสามารถจับคู่กับนิพจน์รูปแบบได้ตัวดำเนินการ GLOB จะคืนค่าจริงซึ่งก็คือ 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 '????'

คุณสามารถรวม Nจำนวนเงื่อนไขที่ใช้ตัวดำเนินการ AND หรือ OR ในที่นี้ XXXX อาจเป็นค่าตัวเลขหรือสตริงก็ได้

ตัวอย่าง

ตารางต่อไปนี้แสดงตัวอย่างจำนวนหนึ่งที่แสดงว่าส่วนไหนที่มีคำสั่ง LIKE ต่างกันด้วย '*' และ '?' ผู้ประกอบการ

ซีเนียร์ คำชี้แจงและคำอธิบาย
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