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),yes,no);    
                     -> no   
   
expr1作為整數值被計算,它意味着如果你正在測試浮點或字符串值,你應該使用一個比較操作來做。        
   
mysql> select IF(0.1,1,0);    
                     -> 0    
mysql> select IF(0.1<>0,1,0);    
                     -> 1  

  參考鏈接:http://database.51cto.com/art/201010/229230.htm

  原創文章,歡迎轉載,轉載請注明出處!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM