Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ข้อได้เปรียบของ CONCAT_WS() เหนือ CONCAT() เมื่อต้องการต่อค่าจากคอลัมน์ที่มีค่า NULL


ตามที่ทราบ 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)