SQL การใช้งาน LIKE Operator

การใช้งาน LIKE Operator ใน SQL ใช้สำหรับการค้นหาข้อมูลในคอลัมน์ที่ตรงกับรูปแบบ (pattern) ที่เรากำหนด โดยจะใช้เครื่องหมายพิเศษ 2 ตัวคือ

  • % (เปอร์เซ็นต์) ใช้แทนกลุ่มอักขระที่สามารถเป็นอะไรก็ได้ หรือไม่มีเลย
  • _ (ขีดล่าง) ใช้แทนหนึ่งอักขระที่สามารถเป็นอะไรก็ได้

สร้างตารางตัวอย่าง

สมมุติว่าเรามีตารางชื่อ Customers ที่เก็บข้อมูลลูกค้า โดยมีโครงสร้างดังนี้

SQL
CREATE TABLE Customers (
    CustomerID INT,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Email VARCHAR(100)
);

INSERT INTO Customers (CustomerID, FirstName, LastName, Email) VALUES
(1, 'John', 'Doe', '[email protected]'),
(2, 'Jane', 'Smith', '[email protected]'),
(3, 'Michael', 'Johnson', '[email protected]'),
(4, 'Sara', 'Doe', '[email protected]'),
(5, 'Samuel', 'Lee', '[email protected]'),
(6, 'Sandy', 'Smith', '[email protected]');

การใช้งานโอเปอเรเตอร์ LIKE

การใช้ % เพื่อค้นหาอักขระใด ๆ จำนวนเท่าใดก็ได้

เราสามารถใช้ % เพื่อค้นหาคำที่เริ่มต้นหรือจบลงด้วยอักขระบางตัว หรือค้นหากลางคำก็ได้

ตัวอย่างที่ 1: ค้นหาชื่อลูกค้าที่นามสกุลลงท้ายด้วยคำว่า “Doe”

SQL
SELECT * FROM Customers
WHERE LastName LIKE '%Doe';

อธิบาย:

  • %Doe หมายความว่าต้องการค้นหานามสกุลที่ลงท้ายด้วยคำว่า “Doe” โดยก่อนหน้าสามารถเป็นอักขระใด ๆ จำนวนเท่าใดก็ได้

ผลลัพธ์

ตัวอย่างที่ 2: ค้นหาที่อยู่อีเมลที่มีคำว่า “example” อยู่ในโดเมน

SQL
SELECT * FROM Customers
WHERE Email LIKE '%example%';

อธิบาย:

  • %example% หมายความว่า ต้องการค้นหาอีเมลที่มีคำว่า “example” อยู่ภายในที่อยู่อีเมล โดยทั้งก่อนและหลังสามารถเป็นอักขระใด ๆ ได้

ผลลัพธ์

การใช้ _ เพื่อแทนที่อักขระหนึ่งตัว

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

ตัวอย่างที่ 3: ค้นหาชื่อที่มีตัวอักษรตัวที่สองเป็น “a”

SQL
SELECT * FROM Customers
WHERE FirstName LIKE '_a%';

อธิบาย:

  • _a% หมายถึงตัวอักษรแรกเป็นอะไรก็ได้ แต่ตัวที่สองต้องเป็น “a” และหลังจากนั้นสามารถเป็นอักขระใด ๆ ได้

ผลลัพธ์

การผสมการใช้ % และ _ ร่วมกัน

เราสามารถใช้ทั้ง % และ _ ในคำสั่งเดียวกัน เพื่อสร้างรูปแบบที่ซับซ้อนมากขึ้นได้

ตัวอย่างที่ 4: ค้นหานามสกุลที่มี 4 ตัวอักษรและลงท้ายด้วยตัว “e”

SQL
SELECT * FROM Customers
WHERE LastName LIKE '__e';

อธิบาย:

  • ___e หมายถึงอักขระสองตัวแรกเป็นอะไรก็ได้ แต่ตัวที่สี่ต้องเป็น “e”

ผลลัพธ์

การใช้ NOT LIKE

นอกจากการใช้ LIKE เพื่อค้นหาข้อมูลที่ตรงกับรูปแบบแล้ว เรายังสามารถใช้ NOT LIKE เพื่อตัดข้อมูลที่ไม่ตรงกับรูปแบบที่กำหนดได้

ตัวอย่างที่ 5: ค้นหาลูกค้าที่นามสกุลไม่ได้ลงท้ายด้วย “Smith”

SQL
SELECT * FROM Customers
WHERE LastName NOT LIKE '%Smith';

อธิบาย:

  • %Smith จะค้นหานามสกุลที่ลงท้ายด้วย “Smith” แต่เมื่อใช้ NOT LIKE จะตัดผลลัพธ์นั้นออก

ผลลัพธ์:

แชร์เรื่องนี้