萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql中CONCAT值為空的問題解決辦法

mysql中CONCAT值為空的問題解決辦法

在mysql中concat函數有一個特點就是有一個值為null那麼不管第二個字符有多少內容都返回為空了,這個特性讓我們在實例應用中可能覺得不方便,但實現就是這樣我們需要使用其它辦法來解決。

天在做opencart開發的時候,需要對用戶表中用戶的電話號碼和區號連接起來,於是使用了concat方法,

 代碼如下 復制代碼

SELECT CONCAT(isdcode,telephone) FROM gb_customer

竟然發現很多NULL列,telephone明明是有值的,於是查詢了相關concat方法,

解釋如下

 代碼如下 復制代碼

mysql CONCAT(str1,str2,…)

 

返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。或許有一個或多個參數,
我表中isdcode的值可能為NULL,所以執行後值為空,於是乎使用個IFNULL判斷一下isdcode是否為空

 代碼如下 復制代碼

SELECT CONCAT(IFNULL(isdcode,''),telephone) FROM gb_customer

這個時候就能夠取出來所有的值了,除了這種辦法我們可以默認指定一個值

mysql內置的ifull函數可以用在查詢時候為NULL值字段給一個默認值,例如:

 代碼如下 復制代碼

select ifnull(col1, 'default-value'), col2 from test;

當test表的col1字段為NULL時,數據庫返回的結果就為default-value,否則就返回本身的值。但是當col1字段的值為空字符串(”),由於空字符不是NULL,因此返回的結果還是空字符串。如果需要把空字符串或NULL值都用default-value代替,顯然ifnull是不行,不過使用case when語句能搞定,示例如下:

 代碼如下 復制代碼

select c1,
(case when c2 = '' or c2 is null then 'default-value' else  c2 end)
from test;

copyright © 萬盛學電腦網 all rights reserved