1. 程式人生 > 資料庫 >MySQL IFNULL判空問題解決方案

MySQL IFNULL判空問題解決方案

問題:mybatis返回的null型別資料消失,導致前端展示出錯

思路:如果查詢出的結果是空值,應當轉換成空字串。當然在前端也能進行判斷,但要求後臺實現這個功能。

解決方案:

  使用如下方法查詢:

  SELECT IFNULL(sex,'') AS sex FROM user --如果查詢到這個sex為null值,那麼就賦值成空字串

  不過,如果查詢語句本身為null,那麼返回前端的還是null,這個就要在程式碼裡判斷了。
  比如:

  SELECT IFNULL(sex,'') AS sex FROM user WHERE id=100

  這條語句本身的返回結果是null,它也就不會執行IFNULL函數了,最後的返回結果當然也是null

  所以我的方法是在程式碼中增加判斷:

  if(ansList == null || ansList.size() == 0){...}

MYSQL IFNULL(expr1,expr2)函式

如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數字或字串值,取決於它被使用的上下文環境。

mysql> select IFNULL(1,0);  
           -> 1  
mysql> select IFNULL(0,10);  
           -> 0  
mysql> select IFNULL(1/0,10);  
           -> 10  
mysql> select IFNULL(1/0,yes);  
           -> yes  

IF(expr1,expr2,expr3)函式

如果expr1是TRUE(expr1<>0且expr1<>NULL),那麼IF()返回expr2,否則它返回expr3。IF()返回一個數字或字串值,取決於它被使用的上下文。

mysql> select IF(1>2,2,3);  
           -> 3  
mysql> select IF(1<2,yes,no);  
           -> yes  
mysql> select IF(strcmp(test,test1),no);  
           -> no  
  
expr1作為整數值被計算,它意味著如果你正在測試浮點或字串值,你應該使用一個比較操作來做。    
  
mysql> select IF(0.1,1,0);  
           -> 0  
mysql> select IF(0.1<>0,0);  
           -> 1 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。