ifnull查詢條件本為null時(shí)無(wú)效問(wèn)題解決

在調(diào)試的時(shí)候,mybatis卻一直報(bào)錯(cuò)該語(yǔ)句嘗試返回null但定義的返回類型時(shí)int。說(shuō)明這個(gè)函數(shù)并沒(méi)有起作用。那為什么沒(méi)有起作用呢?

那是因?yàn)檫@條語(yǔ)句的查詢結(jié)果就是空的,也就是說(shuō),當(dāng)傳進(jìn)來(lái)的參數(shù)是非子菜單時(shí)時(shí),下面這條語(yǔ)句的返回值就是null

1 (SELECT parent_id from menu where code = #{menuCode} and parent_id != 0)

當(dāng)這條語(yǔ)句返回null時(shí),整條語(yǔ)句的返回值都是空的(where分支比select分支優(yōu)先執(zhí)行),這時(shí),等價(jià)于下面這條語(yǔ)句:

1 SELECT IFNULL(id,0) from project_menu where code = NULL

這就不是這個(gè)當(dāng)id為空時(shí),用0替換id返回這個(gè)概念了,因?yàn)楫?dāng)語(yǔ)句本身就是null時(shí),語(yǔ)句中的函數(shù)還會(huì)起作用嗎?

所以,此方法行不通,附上解決方案:

SELECT
CASE
WHEN (SELECT parent_id from menu where code = #{code}) = 0
THEN 0
ELSE
(SELECT id from project_menu where code =
(SELECT code FROM menu where id =
(SELECT parent_id from menu where code =#{code} ))
AND project_id=#{projectId})
END


例子:原來(lái)的sql語(yǔ)句:select provinceID from kdmc_t_province where name =#{province}
由于name=的province本來(lái)就為null,導(dǎo)致ifnull無(wú)效
select ifnull(provinceID ,0) from kdmc_t_province where name =#{province}
解決方法:
select CASE WHEN (select provinceID from kdmc_t_province where name =#{province})is null THEN
0
ELSE (select provinceID from kdmc_t_province where name =#{province})
END;
解決!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SQL SELECT 語(yǔ)句 一、查詢SQL SELECT 語(yǔ)法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 6,006評(píng)論 0 33
  • 轉(zhuǎn) # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 10,152評(píng)論 0 44
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,811評(píng)論 18 399
  • 精力管理,開頭就點(diǎn)名了主題,“管理精力,而非時(shí)間,是保持高效的關(guān)鍵”。按照一般的思考套路:是什么,為什么,怎么辦 ...
    元曉饅閱讀 568評(píng)論 3 0
  • 已經(jīng)想不起來(lái)是從什么時(shí)候開始立志要做文學(xué)青年的,是高中,還是初中,歲月太過(guò)久遠(yuǎn),已經(jīng)無(wú)法回想。 早期印象最深刻的小...
    島主王仙客閱讀 356評(píng)論 0 3

友情鏈接更多精彩內(nèi)容