StepCoding

การใช้ LIKE เพื่อค้นหาตาม pattern ที่กำหนด

อ่าน [2761] หมวดหมู่: คำสั่ง SQL เบื้องต้น

Operator เช่น = และ != จะใช้ในการค้นหาค่าที่มีค่าเท่ากับ หรือไม่เท่ากับ ค่าที่ระบุไว้ แต่เมื่อเราต้องการค้นหาค่าที่มีความคล้ายคลึงกับค่าที่ระบุไว้ เราจะต้องใช้เป็น operator pattern แทน เพื่อกำหนด pattern ในการค้นหา โดยใช้ operator LIKE เช่น SELECT ... FROM ... WHERE field_name like 'pattern' ซึ่ง field_name เป็นชื่อ field ที่ต้องการตรวจสอบ และ pattern เป็นส่วนที่ใช้กำหนด pattern ในการค้นหาข้อมูล

การใช้งาน pattern นั้นประกอบไปด้วยอักขระพิเศษ 2 ตัว (เรียกว่า metacharacter หรือ wildcard) ประกอบไปด้วยอักขระดังนี้

  • % จะ match กับอักขระทุกตัว เช่น ถ้ากำหนด pattern 'a%' มันก็จะ match กับข้อความทุกตัวที่เริ่มต้นด้วย a ส่วนถ้าเรากำหนด pattern '%b' มันก็จะ match กับข้อความที่ลงท้ายด้วย b แต่ถ้าเรากำหนด '%c%' มันก็จะ match กับข้อความทุกตัวที่มี c อยู่ในนั้นด้วย สรุปได้ว่า % จะ match กับ string ทุกตัว รวมไปถึงค่า string ว่างด้วย
  • _ จะ match กับอักขระใด ๆ ก็ได้เพียงตัวเดียวเท่านั้น เช่น ถ้ากำหนด pattern 'd_g' มันก็จะ match กับข้อความ เช่น 'dig', 'dog', 'd@g' เป็นต้น แต่มันจะไม่ match กับ 'dung', 'deag' เนื่องจากว่า _ จะ match กับอักขระใด ๆ เพียงตัวเดียวเท่านั้น

เราสามารถใช้ metacharacter รวมกันได้ เช่น '_%' จะ match กับข้อความใด ๆ ที่ประกอบไปด้วยอย่างน้อย 1 ตัวอักษร

SELECT name, email FROM member WHERE email LIKE '%hotmail.com';

จากตัวอย่างด้านบนเป็นการเลือกแสดงข้อมูลจากตาราง member ที่มี email ลงท้ายด้วย hotmail.com

ผู้สนับสนุน