主頁 > 知識(shí)庫 > MySql中 is Null段判斷無效和IFNULL()失效的解決方案

MySql中 is Null段判斷無效和IFNULL()失效的解決方案

熱門標(biāo)簽:云南電商智能外呼系統(tǒng)價(jià)格 智能外呼系統(tǒng)復(fù)位 大眾點(diǎn)評(píng)星級(jí)酒店地圖標(biāo)注 400電話可以辦理嗎 拉卡拉外呼系統(tǒng) 臨清電話機(jī)器人 高清地圖標(biāo)注道路 話務(wù)外呼系統(tǒng)怎么樣 外東北地圖標(biāo)注

MySql Null字段判斷,和IFNULL失效的處理

ps:(不想看過程就直接把你的sql外邊加上 一個(gè)select就好了)

select a,b,c from table group by a,b,c //這時(shí)候a,b,c 如果判斷null不管用
select IFNULL(a,0),IFNULL(b,0),IFNULL(3,0) 
from (select a,b,c from table group by a,b,c )  //這樣就好啦

不說廢話舉個(gè)栗子,首先看一下這個(gè)很簡單的表

當(dāng)我使用SQL語句通過PID進(jìn)行分組查詢,把列轉(zhuǎn)為行的時(shí)候結(jié)果展示是這樣的

不管我怎么IFNULL(SID1,0) 或者 IF( SID1 is null,0,SID1)展示結(jié)果依舊是 NULL -.-!很無奈啊。

我的sql是這么寫的 沒有用過 MAX函數(shù)的可以直接忽略,只看IFNULL就好,很明顯我是加了IFNULL的。

SELECT
			PID,
			MAX(CASE WHEN SID = 1 THEN IFNULL(PNUM ,0) END) AS SID1,
			MAX(CASE WHEN SID = 2 THEN IFNULL(PNUM ,0) END) AS SID2,
			MAX(CASE WHEN SID = 3 THEN IFNULL(PNUM ,0) END) AS SID3
		FROM
			(
				SELECT
					PID,
					SUM(PNUM) PNUM,
					SID
				FROM
					A
				GROUP BY
					PID
			) temp
		GROUP BY
			temp.PID

但是我發(fā)現(xiàn)結(jié)果仍舊是NULL,然后我發(fā)現(xiàn),IFNULL(),is null 這些判斷只能判斷出來表中存在這個(gè)對(duì)應(yīng)的字段,并且為NULL才可以,而我的表中很明顯沒有這個(gè)字段,所以是判斷不出來的!

在你Select之后通過處理查詢出來的NULL mysql 的is null 和IFNULL() 是不識(shí)別的

說了這么多,那應(yīng)該怎么解決呢?

很簡單,沒有表就來一個(gè)唄?。ㄐ陆ㄒ粋€(gè)Table?)想啥呢!

首先,去掉查詢中的IFNULL,沒有作用留著干嘛,

然后用一個(gè) select 語句把剛才的結(jié)果集當(dāng)做一個(gè)表來查詢,這樣就相當(dāng)于你查詢的表中存在這個(gè)字段,而且值為NULL

SELECT
	PID,IFNULL(SID1,0) SID1,IFNULL(SID2,0) SID2,IFNULL(SID3,0) SID3
FROM
	(
		SELECT
			PID,
			MAX(CASE WHEN SID = 1 THEN PNUM END) AS SID1,
			MAX(CASE WHEN SID = 2 THEN PNUM END) AS SID2,
			MAX(CASE WHEN SID = 3 THEN PNUM END) AS SID3
		FROM
			(
				SELECT
					PID,
					SUM(PNUM) PNUM,
					SID
				FROM
					A
				GROUP BY
					PID
			) temp
		GROUP BY
			temp.PID
	) temp1

看吧,結(jié)果就出來了 哈哈哈哈哈~

MySql使用 IFNULL() 遇到的問題

關(guān)于 ifnull() 函數(shù)

IFNULL(a,b) c

如果a不為null,則 c 的值為 a

如果a為null,則 c 的值為 b

實(shí)際使用時(shí)遇到的問題

IFNULL(a,b) c

若 a 不是為null,而是為 ' ' 空字符串,則 c 的值為 a 空字符串。

而實(shí)際想要的結(jié)果是,a 為空字符串或者null, c 的值都為b。

解決方案

改用 if()函數(shù)

if(a ='' or a  is null,b,a) c

這段的意思是:如果 a 為 null 或者空字符串,c=b;否則 c=a;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • MySQL IFNULL判空問題解決方案
  • mysql中null(IFNULL,COALESCE和NULLIF)相關(guān)知識(shí)點(diǎ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的嵌套使用說明

標(biāo)簽:阿里 三明 福州 無錫 山西 溫州 揚(yáng)州 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySql中 is Null段判斷無效和IFNULL()失效的解決方案》,本文關(guān)鍵詞  MySql,中,Null,段判斷,段,判斷,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySql中 is Null段判斷無效和IFNULL()失效的解決方案》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySql中 is Null段判斷無效和IFNULL()失效的解決方案的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章