ออปอเรเตอร์ SQL LIKE ใช้ wildcard ค้นหาข้อมูลที่คล้ายกับรูปแบบเฉพาะ ใช้ underscore (_) แทนตัวอักษรเดี่ยว และ percent sign (%) แทนศูนย์ หนึ่ง หรือหลายตัวอักษร
เคยต้องการดึงข้อมูลจากคอลัมน์ที่มีค่าคล้ายกับค่าอื่น? เช่น มีตาราง employees ต้องการรายชื่อพนักงานที่ตำแหน่งมีคำว่า "Sales"
นี่คือที่มาของ SQL LIKE operator ในบทความนี้ เราจะแยกวิเคราะห์การใช้ LIKE operator บน SQL server เพื่อคิวรี่ที่เฉพาะเจาะจงกว่า
SQL LIKE
SQL LIKE operator หาเรคอร์ดในฐานข้อมูลที่ค่าคอลัมน์ตรงกับรูปแบบ (pattern) เฉพาะ รูปแบบแสดงด้วยเครื่องหมาย %, _, และข้อความที่ต้องการค้นหา
เช่น ใช้ LIKE หาพนักงานที่ชื่อลงท้ายด้วย S หรือตำแหน่งรวมคำ Associate
LIKE operator ใช้ wildcard characters ค้นหาข้อมูลตรงรูปแบบ Wildcard 2 ตัวที่ใช้บ่อยกับ LIKE:
- _ (underscore) – แทน ตัวอักษรเดี่ยว (single character)
- % (percent sign) – แทน ศูนย์ หนึ่ง หรือหลายตัวอักษร (zero, one, or more characters)
โครงสร้างคิวรี่ใช้ LIKE operator:
SELECT column_name FROM table_name WHERE column_name LIKE pattern;
ในไวยากรณ์นี้ ใช้ LIKE operator ในคำสั่ง SQL SELECT สามารถใช้ใน INSERT, UPDATE, DELETE ได้เช่นกัน
ตัวอย่าง SQL LIKE
สมมติมีตารางข้อมูลพนักงาน ต้องการชื่อและสาขาของพนักงานที่ทำงานในสาขาที่ชื่อขึ้นต้นด้วย S
คิวรี่:
SELECT name, branch FROM employees WHERE branch LIKE 'S%';
ผลลัพธ์:
| name | branch |
| Mike | Stamford |
| Geoff | San Francisco |
| Hannah | San Francisco |
(3 แถว)
เครื่องหมาย % หลังตัวอักษร S บอกโค้ดว่าต้องการทุกสาขาที่ชื่อขึ้นต้นด้วย S คิวรี่คืนทุก string ที่ตรง
หากต้องการชื่อและตำแหน่งพนักงานที่เป็น associate (รวม senior associate) ใช้คิวรี่:
SELECT name, title FROM employees WHERE title LIKE '%Associate%';
คิวรี่หาพนักงานที่ชื่อตรงรูปแบบ '%Associate%' ผลลัพธ์:
| name | title |
| Luke | Sales Associate |
| Mike | Sales Associate |
| Alexis | Sales Associate |
| Hannah | Sales Associate |
| Geoff | Senior Sales Associate |
ตัวอย่าง SQL NOT LIKE
ใช้ NOT LIKE operator เลือกเรคอร์ดที่ ไม่ตรง เงื่อนไข NOT LIKE เป็นการรวม SQL NOT และ LIKE NOT หาเรคอร์ดที่ไม่ตรงเงื่อนไข
เช่น ใช้ NOT LIKE หาชื่อพนักงานที่ ไม่ใช่ 4 ตัวอักษร คิวรี่:
SELECT name FROM employees WHERE name NOT LIKE '____';
คิวรี่ข้ามพนักงานที่ชื่อไม่ใช่ 4 ตัวอักษร คืนคนอื่น
Underscore แต่ละตัว = 1 ตัวอักษร หากชื่อยาวหรือสั้นกว่า 4 ตัว จะไม่ปรากฏในผลลัพธ์
ผลลัพธ์:
| name |
| Alexis Hannah Jonah Geoff |
(4 แถว)
สรุป
SQL LIKE operator ให้คุณใช้รูปแบบ (patterns) ค้นหาเรคอร์ดในฐานข้อมูล ช่วยหาเรคอร์ดคล้ายกันโดยไม่ต้องระบุ exact match ทุกครั้ง LIKE operator อยู่ในส่วน WHERE ของคำสั่ง SQL
ในบทความนี้ เราอธิบายการใช้ LIKE SQL statement ทำให้คิวรี่เฉพาะเจาะจงมากขึ้น และการใช้ NOT LIKE statement ดึงข้อมูลที่ไม่ตรงกฎเฉพาะ
เราเขียนคู่มือฉบับสมบูรณ์สำหรับผู้เรียน SQL ช่วยให้คุณได้ความรู้เป็นนักพัฒนาฐานข้อมูลมืออาชีพ ดูที่หน้า How to Learn SQL