如何克服CONCAT()函式的一個特性,即如果任何一個引數為NULL,它就會返回NULL,尤其是在我們想要連線來自列的值,並且任何列的值都包含NULL時?


上述特性在我們需要連線列的值並且任何列都包含NULL值的情況下並不實用。為了克服這個問題,我們可以使用IFNULL()函式與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()函式的特性,如果任何一個引數為NULL,它就會返回NULL,所以這不是有用的輸出。我們可以藉助IFNULL()函式克服此特性,如下面的查詢所示:

mysql> Select CONCAT(IFNULL(Fname,''),IFNULL(Mname,''),IFNULL(Lname,''))AS Name from Student_Name;
+----------------+
| Name           |
+----------------+
| RahulSingh     |
| GauravKumar    |
| HarshitKhurana |
| YashPalSharma  |
+----------------+
4 rows in set (0.06 sec)

更新於: 2020年6月22日

274 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.