ตามที่ทราบ CONCAT() จะคืนค่า NULL หากอาร์กิวเมนต์ใดๆ เป็น NULL แต่ CONCAT_WS() จะคืนค่า NULL ก็ต่อเมื่ออาร์กิวเมนต์แรกคือ Separator เป็น NULL และจะข้าม NULL อื่นๆ ทั้งหมด เราสามารถบอกได้ว่านี่คือข้อได้เปรียบของ CONCAT_WS() เหนือ CONCAT() เมื่อเราต้องการต่อค่าจากคอลัมน์และคอลัมน์ใดๆ มีค่า NULL เพื่อเข้าใจ เราพิจารณาตัวอย่างจากตาราง Student_name ที่มีข้อมูลดังนี้:
mysql> Select * from Student_Name; +---------+-------+---------+ | FName | Mname | Lname | +---------+-------+---------+ | Rahul | NULL | Singh | | Gaurav | Kumar | NULL | | Harshit | NULL | Khurana | | Yash | Pal | Sharma | +---------+-------+---------+ 4 rows in set (0.00 sec)
ตอนนี้ สมมติว่าหากเราต้องการต่อค่าของคอลัมน์ Fname, Mname และ Lname ผลลัพธ์จะเป็นดังนี้:
mysql> Select CONCAT(Fname,Mname,Lname) AS Name from Student_Name; +---------------+ | Name | +---------------+ | NULL | | NULL | | NULL | | YashPalSharma | +---------------+ 4 rows in set (0.00 sec)
แต่ หากเราใช้ CONCAT_WS() มันจะข้าม NULL ตามที่แสดงในคำสั่งต่อไปนี้:
mysql> Select CONCAT_WS(' ',Fname,Mname,Lname) AS Name from student_name;
+-----------------+
| Name |
+-----------------+
| Rahul Singh |
| Gaurav Kumar |
| Harshit Khurana |
| Yash Pal Sharma |
+-----------------+
4 rows in set (0.00 sec)