ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

Clause LIKE คืออะไร?

บทความนี้อธิบายถึง `LIKE` Clause ใน SQL ซึ่งใช้สำหรับการค้นหาข้อมูลโดยอาศัยรูปแบบ (pattern matching) ร่วมกับ Wildcard Characters อย่าง `%` (แทนตัวอักษรใดๆ ก็ได้...

Clause LIKE คืออะไร?

ในบทเรียนที่ผ่านมา เราได้เรียนรู้การใช้ WHERE Clause เพื่อกรองข้อมูลตามเงื่อนไขที่กำหนด เช่น การเลือกข้อมูลลูกค้าที่มีอายุมากกว่า 30 ปี แต่ถ้าเราต้องการค้นหาข้อมูลที่มีรูปแบบ (pattern) เฉพาะเจาะจง เช่น ชื่อลูกค้าที่ขึ้นต้นด้วยตัวอักษร "A" หรืออีเมลที่มีโดเมนเป็น "@example.com" เราจะทำอย่างไร? คำตอบคือ LIKE Clause นั่นเอง!

LIKE Clause เป็นส่วนหนึ่งของ WHERE Clause ที่ใช้สำหรับการค้นหาข้อมูลโดยอาศัยรูปแบบ (pattern matching) ที่กำหนด โดย LIKE จะทำงานร่วมกับ Wildcard Characters ซึ่งเป็นสัญลักษณ์พิเศษที่ใช้แทนตัวอักษรหรือกลุ่มตัวอักษรที่ไม่ทราบค่า

Wildcard Characters ที่ควรรู้จัก

LIKE Clause มาพร้อมกับ Wildcard Characters หลักๆ 2 ตัวที่ใช้บ่อย ได้แก่:

  • % (Percent Sign): แทนตัวอักษรใดๆ ก็ได้ ตั้งแต่ 0 ตัวขึ้นไป
  • _ (Underscore): แทนตัวอักษรใดๆ ก็ได้ 1 ตัว

ลองมาดูตัวอย่างการใช้งาน % และ _ เพื่อให้เห็นภาพกันชัดเจนขึ้น

การใช้งาน % (Percent Sign)

% ใช้แทนตัวอักษรใดๆ ก็ได้ ตั้งแต่ 0 ตัวขึ้นไป นั่นหมายความว่าเราสามารถใช้ % เพื่อค้นหาข้อมูลที่ขึ้นต้นด้วย, ลงท้ายด้วย, หรือมีข้อความบางส่วนอยู่ตรงกลางได้

ตัวอย่างที่ 1: ค้นหาชื่อลูกค้าที่ขึ้นต้นด้วย "A"

SELECT *
FROM customers
WHERE name LIKE 'A%';

คำสั่ง SQL นี้จะเลือกข้อมูลทั้งหมดจากตาราง customers โดยที่คอลัมน์ name ขึ้นต้นด้วยตัวอักษร "A" ไม่ว่าจะมีตัวอักษรอื่นตามมาอีกกี่ตัวก็ตาม

ตัวอย่างที่ 2: ค้นหาอีเมลที่ลงท้ายด้วย "@example.com"

SELECT *
FROM users
WHERE email LIKE '%@example.com';

คำสั่ง SQL นี้จะเลือกข้อมูลทั้งหมดจากตาราง users โดยที่คอลัมน์ email ลงท้ายด้วย "@example.com" ไม่ว่าจะมีตัวอักษรใดๆ นำหน้า "@example.com" ก็ตาม

ตัวอย่างที่ 3: ค้นหาชื่อสินค้าที่มีคำว่า "phone" อยู่ตรงกลาง

SELECT *
FROM products
WHERE product_name LIKE '%phone%';

คำสั่ง SQL นี้จะเลือกข้อมูลทั้งหมดจากตาราง products โดยที่คอลัมน์ product_name มีคำว่า "phone" อยู่ตรงไหนก็ได้ ไม่ว่าจะเป็นตอนต้น ตอนท้าย หรือตรงกลาง

การใช้งาน _ (Underscore)

_ ใช้แทนตัวอักษรใดๆ ก็ได้ 1 ตัวเท่านั้น นั่นหมายความว่าเราต้องระบุจำนวนตัวอักษรที่เราต้องการแทนที่อย่างชัดเจน

ตัวอย่างที่ 1: ค้นหาชื่อลูกค้าที่มีตัวอักษร 5 ตัว โดยขึ้นต้นด้วย "J" และลงท้ายด้วย "e"

SELECT *
FROM customers
WHERE name LIKE 'J__e';

คำสั่ง SQL นี้จะเลือกข้อมูลทั้งหมดจากตาราง customers โดยที่คอลัมน์ name มีความยาว 5 ตัวอักษร โดยตัวอักษรแรกคือ "J" และตัวอักษรสุดท้ายคือ "e"

ตัวอย่างที่ 2: ค้นหาเบอร์โทรศัพท์ที่มีรูปแบบ "08x-xxx-xxxx"

SELECT *
FROM users
WHERE phone_number LIKE '08_-___-____';

คำสั่ง SQL นี้จะเลือกข้อมูลทั้งหมดจากตาราง users โดยที่คอลัมน์ phone_number มีรูปแบบตามที่กำหนด โดย "x" ในตัวอย่างคือตัวเลขใดๆ ก็ได้

กรณีใช้งานจริง

ลองมาดูตัวอย่างการใช้งาน LIKE Clause ในสถานการณ์จริงกันบ้าง

สถานการณ์: ระบบค้นหา (Search)

สมมติว่าเรากำลังสร้างระบบค้นหาสินค้าในร้านค้าออนไลน์ เราสามารถใช้ LIKE Clause เพื่อค้นหาสินค้าที่มีชื่อตรงกับคำค้นหาของผู้ใช้ได้

SELECT *
FROM products
WHERE product_name LIKE '%keyword%';

โดยที่ keyword คือคำที่ผู้ใช้ป้อนในช่องค้นหา คำสั่ง SQL นี้จะค้นหาสินค้าทั้งหมดที่มีชื่อสินค้ามีคำว่า keyword อยู่ตรงไหนก็ได้

สถานการณ์: การตรวจสอบข้อมูล (Data Validation)

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

SELECT *
FROM users
WHERE email NOT LIKE '%@%.%';

คำสั่ง SQL นี้จะเลือกข้อมูลทั้งหมดจากตาราง users โดยที่คอลัมน์ email ไม่มีเครื่องหมาย "@" หรือไม่มีเครื่องหมาย "." ซึ่งอาจบ่งชี้ว่าอีเมลนั้นไม่ถูกต้อง

ข้อผิดพลาดที่พบบ่อย

การใช้งาน LIKE Clause อาจทำให้เกิดข้อผิดพลาดได้ หากไม่ระมัดระวัง ลองมาดูข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข

ข้อผิดพลาด: ลืมใส่ % หรือ _

หากเราลืมใส่ % หรือ _ ใน LIKE Clause จะทำให้การค้นหาไม่เป็นไปตามที่ต้องการ เช่น

SELECT *
FROM customers
WHERE name LIKE 'Apple'; -- ผิด!

คำสั่ง SQL นี้จะค้นหาชื่อลูกค้าที่ตรงกับคำว่า "Apple" เท่านั้น ไม่ได้ค้นหาชื่อที่ขึ้นต้นด้วย "Apple" หากต้องการค้นหาชื่อที่ขึ้นต้นด้วย "Apple" ต้องใช้ LIKE 'Apple%'

ข้อผิดพลาด: ใช้ = แทน LIKE

= ใช้สำหรับการเปรียบเทียบค่าที่เท่ากันเท่านั้น ไม่สามารถใช้กับ Wildcard Characters ได้ หากต้องการใช้ Wildcard Characters ต้องใช้ LIKE เท่านั้น

SELECT *
FROM customers
WHERE name = 'A%'; -- ผิด!

คำสั่ง SQL นี้จะไม่ทำงานตามที่ต้องการ หากต้องการค้นหาชื่อที่ขึ้นต้นด้วย "A" ต้องใช้ LIKE 'A%'

สรุป

LIKE Clause เป็นเครื่องมือที่มีประโยชน์สำหรับการค้นหาข้อมูลโดยอาศัยรูปแบบ (pattern matching) ที่กำหนด การเข้าใจการทำงานของ Wildcard Characters อย่าง % และ _ จะช่วยให้เราสามารถเขียน Query ที่มีประสิทธิภาพและตรงกับความต้องการได้ อย่าลืมฝึกฝนการใช้งาน LIKE Clause กับสถานการณ์ต่างๆ เพื่อให้เกิดความชำนาญ

ในบทเรียนถัดไป เราจะมาเรียนรู้เกี่ยวกับ IN Clause ซึ่งเป็นอีกหนึ่ง Clause ที่มีประโยชน์ในการกรองข้อมูลตามเงื่อนไขที่กำหนด

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์