MySQL การใช้งานฟังก์ชัน CONCAT_WS()

ฟังก์ชัน CONCAT_WS() (ย่อมาจาก Concatenate With Separator) คือฟังก์ชันใน MySQL ที่ใช้รวมข้อความหลายค่าเข้าด้วยกันโดยมีตัวคั่น (separator) อยู่ระหว่างข้อความแต่ละข้อความ
แตกต่างจาก CONCAT() ตรงที่ CONCAT_WS() อนุญาตให้เราสามารถกำหนดตัวคั่นเองได้

ประโยชน์ของ CONCAT_WS()

  • ใช้สร้างข้อความที่มีรูปแบบ เช่น ชื่อ-นามสกุล, เมือง, จังหวัด, ประเทศ
  • สะดวกมากในการจัดรูปแบบข้อมูล สำหรับแสดงผล เช่น export CSV, รายงาน
  • ไม่ต้องเขียน IFNULL() สำหรับจัดการ NULL เพราะมันจะข้ามให้โดยอัตโนมัติ

รูปแบบการใช้งาน

CONCAT_WS(separator, str1, str2, ..., strN)
  • separator คือตัวคั่นที่เราต้องการใช้ (เช่น ' ', ',', ' - ', ' | ')
  • str1, str2, … คือข้อความที่ต้องการรวม
  • ค่าที่เป็น NULL จะถูกข้ามโดยอัตโนมัติ

ตัวอย่างการใช้งาน

SQL
SELECT CONCAT_WS(' ', 'John', 'Doe');            -- ผลลัพธ์: John Doe
SELECT CONCAT_WS('-', '2025', '04', '02');       -- ผลลัพธ์: 2025-04-02
SELECT CONCAT_WS(', ', 'Bangkok', NULL, 'Thailand'); -- ผลลัพธ์: Bangkok, Thailand
  • ค่าที่เป็น NULL จะถูกข้ามไป ไม่ทำให้ผลลัพธ์เป็นกลาย NULL

รวมชื่อ-นามสกุลของนักแสดง พร้อมใช้เว้นวรรคเป็นตัวคั่น

SQL
SELECT actor_id,
       CONCAT_WS(' ', first_name, last_name) AS full_name
FROM actor
LIMIT 10;

รวมที่อยู่ลูกค้า (จากตาราง customer และ address)

SQL
SELECT c.customer_id,
       CONCAT_WS(', ', a.address, a.district, ci.city, co.country) AS full_address
FROM customer c
JOIN address a ON c.address_id = a.address_id
JOIN city ci ON a.city_id = ci.city_id
JOIN country co ON ci.country_id = co.country_id
LIMIT 10;
  • รวมที่อยู่ทั้งหมดให้เป็นบรรทัดเดียว โดยคั่นด้วยเครื่องหมายคอมม่า ,
  • ถ้าที่เป็นค่า NULL จะถูกข้ามโดยอัตโนมัติ
แชร์เรื่องนี้