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