SQL Wildcard Characters
wildcard character ใช้เพื่อแทนที่อักขระตั้งแต่หนึ่งตัวขึ้นไปในสตริงและถูกนำมาใช้ร่วมกับ LIKE operator ซึ่งถูกใช้ข้างใน WHERE clause เพื่อค้นหารูปแบบที่ระบุในคอลัมน์
ตัวอย่าง
ส่งคืนค่าลูกค้าทั้งหมดที่ขึ้นต้นด้วยตัวอักษร ‘a’:
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
Wildcard Characters
สัญลักษณ์ | คำอธิบาย |
---|---|
% | แสดงถึงอักขระ 0 หรือมากกว่า |
_ | แสดงถึงอักขระตัวเดียว |
[] | แสดงถึงอักขระเดี่ยวใดๆที่อยู่ในวงเล็บ* |
^ | แสดงถึงอักขระใดๆที่ไม่อยู่ในวงเล็บ* |
– | แสดงถึงอักขระเดี่ยวใดๆภายในช่วงที่ระบุ* |
{} | แสดงถึงอักขระที่หลีกเลี่ยง** |
* ไม่รองรับฐานข้อมูล PostgreSQL และ MySQL
** รองรับเฉพาะในฐานข้อมูล Oracle เท่านั้น
Demo Database
ด้านล่างนี้คือการเลือกจากตาราง Customers ที่ใช้ในตัวอย่าง:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
การใช้ % Wildcard
% wildcard แสดงถึงอักขระจำนวนเท่าใดก็ได้แม้แต่อักขระศูนย์ก็ตาม
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดที่ลงท้ายด้วยรูปแบบ ‘es’:
SELECT * FROM Customers
WHERE CustomerName LIKE '%es';
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดที่มีรูปแบบ ‘mer’:
SELECT * FROM Customers
WHERE CustomerName LIKE '%mer%';
การใช้ _ Wildcard
_ wildcard แสดงถึงอักขระตัวเดียวอาจเป็นอักขระหรือตัวเลขใดก็ได้ แต่ละ_ตัวแทนอักขระแค่ตัวเดียวเท่านั้น
ตัวอย่าง
ส่งคืนค่าลูกค้าทั้งหมดโดย City ขึ้นต้นด้วยอักขระใดๆ ตามด้วย “ondon”:
SELECT * FROM Customers
WHERE City LIKE '_ondon';
ตัวอย่าง
ส่งคืนค่าลูกค้าทั้งหมดโดย City ขึ้นต้นด้วย “L” ตามด้วยอักขระ 3 ตัว และลงท้ายด้วย “on”:
SELECT * FROM Customers
WHERE City LIKE 'L___on';
การใช้ [] Wildcard
[]
wildcard จะส่งกลับผลลัพธ์หากอักขระตัวใดตัวหนึ่งภายในตรงกัน
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดที่ขึ้นต้นด้วย “b”, “s” หรือ “p”:
SELECT * FROM Customers
WHERE CustomerName LIKE '[bsp]%';
การใช้ – Wildcard
-
wildcard ช่วยให้คุณสามารถระบุช่วงของอักขระภายใน []
wildcard.
ตัวอย่าง
ส่งคืนค่าลูกค้าทั้งหมดที่ขึ้นต้นด้วย “a”, “b”, “c”, “d”, “e” หรือ “f”:
SELECT * FROM Customers
WHERE CustomerName LIKE '[a-f]%';
การใช้ Wildcards รวมกัน
wildcard ใดๆ เช่น %
และ _
, สามารถใช้ร่วมกับ wildcards อื่นๆได้
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดที่ขึ้นต้นด้วย “a” และมีความยาวอย่างน้อย 3 ตัวอักษร:
SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';
ตัวอย่าง
คืนลูกค้าทั้งหมดที่มี “r” ในตำแหน่งที่สอง:
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';
ไม่มี Wildcard
หากไม่มีการระบุ Wildcard วลีจะต้องตรงกันทุกประการจึงจะส่งกลับผลลัพธ์
ตัวอย่าง
คืนลูกค้าทั้งหมดจากสเปน:
SELECT * FROM Customers
WHERE Country LIKE 'Spain';
ตัวแทนการเข้าถึงของ Microsoft
ฐานข้อมูล Microsoft Access มี wildcards อื่นๆ:
Symbol | คำอธิบาย | ตัวอย่าง |
---|---|---|
* | แสดงถึงอักขระ 0 หรือ มากกว่านั้น | bl* finds bl, black, blue, and blob |
? | แสดงถึงอักขระเดี่ยว | h?t finds hot, hat, and hit |
[] | แสดงถึงอักขระเดี่ยวใดๆ ที่อยู่ในวงเล็บ | h[oa]t finds hot and hat, but not hit |
! | แสดงถึงอักขระใดๆ ที่ไม่อยู่ในวงเล็บ | h[!oa]t finds hit, but not hot and hat |
– | แสดงถึงอักขระเดี่ยวใดๆ ที่อยู่ในช่วงที่ระบุ | c[a-b]t finds cat and cbt |
# | แสดงถึงอักขระตัวเลขเดี่ยว | 2#5 finds 205, 215, 225, 235, 245, 255, 265, 275, 285, and 295 |