当我们想要连接某个列中的值并且其中有任何一列的值为NULL时,CONCAT_WS()函数相较于CONCAT()函数有什么优势?
正如我们所知,如果任何一个参数为NULL,CONCAT()函数会返回NULL,但是当第一个参数即分隔符为NULL时,CONCAT_WS()函数仅返回NULL,并忽略任何其他NULL。我们可以说,当我们想要连接某个列中的值并且其中有任何一列的值为NULL时,这是CONCAT_WS()函数相较于CONCAT()函数的优势。为了理解它,我们考虑来自表格“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)
阅读更多:MySQL 教程
极客教程