查詢字段為空的數(shù)據(jù)。如下三條語(yǔ)句查詢的結(jié)果各不相同。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)郎溪,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
select count(0) from tps_uw_detail where trim(coreContNo)=''; ###1736
select count(0) from? tps_uw_detail where coreContNo is null; ###735
select count(0) from? tps_uw_detail where (coreContNo is null or trim(coreContNo)='');##2471
='';就是存的空字符串;is null 就是默認(rèn)的。
由于是后來(lái)新加的字段,默認(rèn)為null,所以歷史數(shù)據(jù)都為null。表中加上這個(gè)字段后,再落庫(kù)的數(shù)據(jù)就是空字符串了。
根據(jù)自己的需求選用腳本,第三個(gè)是適合我的。
null表示的含義是未知,即不知道有沒(méi)有。 和‘’空字符串不等,因?yàn)榭兆址喈?dāng)于沒(méi)有值。 null代表的是不知道有沒(méi)有值。 所以在數(shù)據(jù)查詢中如果字段默認(rèn)值是null,想查詢出不等于某個(gè)條件的一定要加上——字段名 is null 或者字段名 is not null來(lái)...
mybatis返回的null類(lèi)型數(shù)據(jù)消失,導(dǎo)致前端展示出錯(cuò)。
如果查詢出的結(jié)果是空值,應(yīng)當(dāng)轉(zhuǎn)換成空字符串。當(dāng)然在前端也能進(jìn)行判斷,但要求后臺(tái)實(shí)現(xiàn)這個(gè)功能。
解決方案:
使用如下方法查詢:
SELECT?IFNULL(sex,'')?AS sex FROM user?--如果查詢到這個(gè)sex為null值,那么就賦值成空字符串不過(guò),如果查詢語(yǔ)句本身為null,那么返回前端的還是null,這個(gè)就要在代碼里判斷了。
比如:
SELECT IFNULL(sex,'') AS sex FROM user WHERE id=100
這條語(yǔ)句本身的返回結(jié)果是null,它也就不會(huì)執(zhí)行IFNULL函數(shù)了,最后的返回結(jié)果當(dāng)然也是null。所以方法是在代碼中增加判斷:
if(ansList == null || ansList.size() == 0){...}
擴(kuò)展資料
mySql中IFNULL的使用說(shuō)明:
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個(gè)數(shù)字或字符串值
具體用法如:現(xiàn)有學(xué)生表(tbl_student)和分?jǐn)?shù)表(score),查詢學(xué)生表的所有字段和學(xué)生相對(duì)于的英語(yǔ)成績(jī)(english_score)sql如下:
select stu.*,IFNULL(score.english_score,0)?from tbl_student stu,tbl_score score where 1=1 and stu.stu_id=score.stu_id
以上sql中,如果score表中的english_score有值,則IFNULL(score.english_score,0)就顯示english_score,否則,顯示0。