問題:mybatis返回的null類型數(shù)據(jù)消失,導(dǎo)致前端展示出錯
思路:如果查詢出的結(jié)果是空值,應(yīng)當(dāng)轉(zhuǎn)換成空字符串。當(dāng)然在前端也能進行判斷,但要求后臺實現(xiàn)這個功能。
解決方案:
使用如下方法查詢:
SELECT IFNULL(sex,'') AS sex FROM user --如果查詢到這個sex為null值,那么就賦值成空字符串
不過,如果查詢語句本身為null,那么返回前端的還是null,這個就要在代碼里判斷了。
比如:
SELECT IFNULL(sex,'') AS sex FROM user WHERE id=100
這條語句本身的返回結(jié)果是null,它也就不會執(zhí)行IFNULL函數(shù)了,最后的返回結(jié)果當(dāng)然也是null
所以我的方法是在代碼中增加判斷:
if(ansList == null || ansList.size() == 0){...}
MYSQL IFNULL(expr1,expr2)函數(shù)
如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數(shù)字或字符串值,取決于它被使用的上下文環(huán)境。
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)函數(shù)
如果expr1是TRUE(expr1>0且expr1>NULL),那么IF()返回expr2,否則它返回expr3。IF()返回一個數(shù)字或字符串值,取決于它被使用的上下文。
mysql> select IF(1>2,2,3);
-> 3
mysql> select IF(12,yes,no);
-> yes
mysql> select IF(strcmp(test,test1),yes,no);
-> no
expr1作為整數(shù)值被計算,它意味著如果你正在測試浮點或字符串值,你應(yīng)該使用一個比較操作來做。
mysql> select IF(0.1,1,0);
-> 0
mysql> select IF(0.1>0,1,0);
-> 1
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- MySql中 is Null段判斷無效和IFNULL()失效的解決方案
- mysql中null(IFNULL,COALESCE和NULLIF)相關(guān)知識點總結(jié)
- mysql中替代null的IFNULL()與COALESCE()函數(shù)詳解
- 淺談Mysql中類似于nvl()函數(shù)的ifnull()函數(shù)
- MySql中的IFNULL、NULLIF和ISNULL用法詳解
- 淺談SQLServer的ISNULL函數(shù)與Mysql的IFNULL函數(shù)用法詳解
- mysql中IFNULL,IF,CASE的區(qū)別介紹
- MySQL ifnull的嵌套使用說明