專案中查詢用到了concat()拼接函數,在此查詢中出現了拼接的欄位為null的情況,拼接結果為null在應用層報告了空指標異常。
SELECT CONCAT('1,',NULL,'2') result;
SELECT CONCAT('1,','','2') result;
透過實作證明CONCAT()函數拼接時如果拼接的參數有NULL時,則結果為NULL。
方法一:使用IFNULL函數如果是NULL將其置為''空字串。
SELECT CONCAT('1,',IFNULL(NULL,''),'2') result;
方法二:使用CONCAT_WS函數。指定有分隔符號的字串連接
SELECT CONCAT_WS(',','1',NULL,'2') result;
指定使用逗號進行分隔
#CONCAT_WS(分隔符,參數1,參數2,. ..參數n)與CONCAT(參數1,參數2,...參數n)
兩個函數的差異:
CONCAT_WS() :表示concat with separator,即有分隔符號的字串連接
CONCAT():表示將字串進行連接
兩個最重要的區別就是,CONCAT()函數,拼接參數中存在NULL直接回傳NULL
而CONCAT_WS()函數在執行的時候,不會因為NULL值而回傳NULL
以上是MySQL中CONCAT()函式拼接出現NULL問題如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!