SQL : LIKE ไม่ได้แปลว่าชอบเสมอไป
สำหรับบทความนี้จะแนะนำการใช้คำสั่ง LIKE ใน SQL โดยปกติ LIKE จะเป็นคำสั่งการเปรียบเทียบ ในส่วนของเงื่อนไขหลัง WHERE ซึ่งมี 2 สัญลักษณ์ที่จะเจอบ่อยๆในการใช้งานร่วมกันคือ
- % (Percent ใช้สำหรับค้นหาตัวเลข 0, 1 หรือ หลายๆตัวก็ได้)
- _ (Underscore ใช้สำหรับค้นหาตัวอักษรหรือตัวเลขตัวเดียว
LIKE Syntax ของมันคือ
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
ลองใช้งานกันดูได้จาก w3school นะคับ เมื่อยังไม่ได้ใส่เงื่อนไขเข้าไป จะเอา Table customers ทั้งหมดมาโชว์ดูก่อน
- a% คือ ค้นหาข้อมูลที่เริ่มต้นด้วย a (ไม่สนว่าจะตัวพิมพ์เล็กหรือใหญ่นะ)
SELECT * FROM Customers
WHERE CustomerName LIKE ‘a%’;
2. %a คือ ค้นหาคำที่ลงท้ายด้วย a
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';
3. %or% แบบนี้คือ ค้นหาข้อมูลที่มีคำว่า “or” เป็นส่วนประกอบ
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%'
4. _r% แบบนี้คือ ค้นหาข้อมูลที่มี r เป็นส่วนประกอบตัวที่ 2 นะ
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';
5. a__% แบบนี้คือ ให้เริ่มต้นด้วย a และมีอย่างน้อย 3 หลัก
(at least 3 characters in length)
SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';
6. a%o แบบนี้คือ ให้เร่ิมต้นด้วย “a” และลงท้ายด้วย “o”
SELECT * FROM Customers
WHERE ContactName LIKE 'a%o';
7. NOT LIKE ‘a%’ แบบนี้คือ จะไม่เอาที่ขึ้นต้นด้วย ‘a’ (เพราะมี not นำหน้า like นะ)
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';
PS:
เพิ่มเติมตัวอย่างของการใช้งานจริง ใน Postgres
ที่ต้องการหาข้อมูลว่ามี username
ที่ขึ้นต้นด้วยคำว่า Walee
แบบ insensitive
รึป่าว ตามภาพด้านล่างเลย
like
และ ilike
ใน SQL
จบล่ะคับ แล้วพบกันใหม่คับ
GRASSROOT ENGINEER