SQL LIKE Operator


LIKE operator ถูกใช้ใน WHERE clause ใช้เป็นคำสั่งเพื่อค้นหารูปแบบที่ระบุในคอลัมน์

มี wildcard สองตัวที่มักใช้ร่วมกับ LIKE operator :

  •  เครื่องหมายเปอร์เซ็นต์ % แสดงถึงศูนย์ หนึ่ง หรือหลายอักขระ
  •  เครื่องหมายขีดล่าง _ หมายถึงอักขระตัวเดียว

ตัวอย่าง

เลือกลูกค้าทั้งหมดที่ขึ้นต้นด้วยตัวอักษร “a”:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';


รูปแบบ (Syntax)

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;


Demo Database

ด้านล่างนี้คือการเลือกจากตาราง Customers ที่ใช้ในตัวอย่าง:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1
Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4
Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden


_ Wildcard

 _ wildcard แสดงถึงอักขระตัวเดียว อาจเป็นอักขระหรือตัวเลขใดก็ได้ แต่ละ _ ตัวแทนอักขระตัวเดียวและตัวเดียวเท่านั้น

ตัวอย่าง

ส่งคืนค่าตารางลูกค้าทั้งหมดจากเมืองที่ขึ้นต้นด้วย ‘L’ ตามด้วยอักขระตัวแทนหนึ่งตัว จากนั้น ‘nd’ และอักขระตัวแทนสองตัว:

SELECT * FROM Customers
WHERE City LIKE 'L_nd__';


% Wildcard

% wildcard แสดงถึงอักขระจำนวนเท่าใดก็ได้ แม้แต่อักขระศูนย์ก็ตาม

ตัวอย่าง

คืนลูกค้าทั้งหมดจากเมืองที่มีตัวอักษร ‘L’:

SELECT * FROM Customers
WHERE City LIKE '%L%';


ขึ้นต้นด้วย

หากต้องการส่งคืนเรคคอร์ดที่ขึ้นต้นด้วยตัวอักษรหรือวลีเฉพาะ ให้เพิ่มที่ % ท้ายตัวอักษรหรือวลี

ตัวอย่าง

ส่งคืนเรคคอร์ดลูกค้าทั้งหมดที่ขึ้นต้นด้วย ‘La’:

SELECT * FROM Customers
WHERE CustomerName LIKE 'La%';

เคล็ดลับ:คุณยังสามารถรวมเงื่อนไขจำนวนเท่าใดก็ได้โดยใช้ AND หรือ OR

ตัวอย่าง

คืนลูกค้าทั้งหมดที่ขึ้นต้นด้วย ‘a’ หรือเริ่มต้นด้วย ‘b’:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%' OR CustomerName LIKE 'b%';


ลงท้ายด้วย

หากต้องการส่งคืนบันทึกที่ลงท้ายด้วยตัวอักษรหรือวลีเฉพาะ ให้เพิ่มที่ % หน้าตัวอักษรหรือวลี

ตัวอย่าง

คืนลูกค้าทั้งหมดที่ลงท้ายด้วย ‘a’:

SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

เคล็ดลับ:คุณยังสามารถรวม “เริ่มต้นด้วย” และ “ลงท้ายด้วย” ได้:

ตัวอย่าง

คืนลูกค้าทั้งหมดที่ขึ้นต้นด้วย “b” และลงท้ายด้วย “s”:

SELECT * FROM Customers
WHERE CustomerName LIKE 'b%s';


ประกอบด้วย

หากต้องการส่งคืนระเบียนที่มีตัวอักษรหรือวลีเฉพาะ ให้เพิ่ม % ทั้งก่อนและหลังตัวอักษรหรือวลี

ตัวอย่าง

ส่งคืนค่าลูกค้าทั้งหมดที่มีวลี ‘or’

SELECT * FROM Customers
WHERE CustomerName LIKE '%or%'


รวม Wildcards

Wildcards ใดๆเช่น % และ _ สามารถใช้ร่วมกับ 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';