ฟังก์ชัน 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จะถูกข้ามโดยอัตโนมัติ