当我们要连接列中的值并且任何列的值都为NULL时,CONCAT_WS()函数相对于CONCAT()函数有什么优势?
我们知道,CONCAT()
如果任何参数为NULL,则函数返回NULL,但是CONCAT_WS()函数仅在第一个参数(即分隔符为NULL)并且忽略任何其他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)