最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年06月16日 14:43:35   作者:1024~  
這篇文章主要介紹了MySql中 is Null段判斷無效和IFNULL()失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

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

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

select a,b,c from table group by a,b,c //這時候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 )  //這樣就好啦

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

在這里插入圖片描述

當(dāng)我使用SQL語句通過PID進(jìn)行分組查詢,把列轉(zhuǎn)為行的時候結(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 這些判斷只能判斷出來表中存在這個對應(yīng)的字段,并且為NULL才可以,而我的表中很明顯沒有這個字段,所以是判斷不出來的!

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

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

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

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

然后用一個 select 語句把剛才的結(jié)果集當(dāng)做一個表來查詢,這樣就相當(dāng)于你查詢的表中存在這個字段,而且值為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í)際使用時遇到的問題

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;

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

相關(guān)文章

  • 簡述Redis和MySQL的區(qū)別

    簡述Redis和MySQL的區(qū)別

    這篇文章主要介紹了簡述Redis和MySQL的區(qū)別,小編覺得挺不錯的,這里給大家分享下,需要的朋友可以了解。
    2017-10-10
  • mysql利用覆蓋索引避免回表優(yōu)化查詢

    mysql利用覆蓋索引避免回表優(yōu)化查詢

    這篇文章主要給大家介紹了關(guān)于mysql如何利用覆蓋索引避免回表優(yōu)化查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 詳解MySQL8的新特性ROLE

    詳解MySQL8的新特性ROLE

    這篇文章主要介紹了詳解MySQL8的新特性ROLE的相關(guān)資料,幫助大家更好的理解和使用MySQL8,感興趣的朋友可以了解下
    2020-11-11
  • 關(guān)于Mysql隔離級別、鎖與MVCC介紹

    關(guān)于Mysql隔離級別、鎖與MVCC介紹

    本篇文章給大家詳細(xì)介紹了一下關(guān)于Mysql隔離級別、鎖與MVCC的相關(guān)知識,有這方面興趣的朋友參考下。
    2018-01-01
  • 詳解MySQL InnoDB的索引擴(kuò)展

    詳解MySQL InnoDB的索引擴(kuò)展

    這篇文章主要介紹了MySQL InnoDB的索引擴(kuò)展的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL中的數(shù)據(jù)加密解密安全技術(shù)教程

    MySQL中的數(shù)據(jù)加密解密安全技術(shù)教程

    在數(shù)據(jù)庫應(yīng)用程序中,數(shù)據(jù)的安全性是至關(guān)重要的,MySQL作為一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),也提供了一些數(shù)據(jù)加密和解密的技巧來保護(hù)敏感數(shù)據(jù)的安全性,為了保護(hù)敏感數(shù)據(jù)免受未經(jīng)授權(quán)的訪問,我們可以使用加密和解密技術(shù)
    2024-01-01
  • MySQL配置文件my.ini全過程

    MySQL配置文件my.ini全過程

    這篇文章主要介紹了MySQL配置文件my.ini全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • MySQL update set 和 and的區(qū)別

    MySQL update set 和 and的區(qū)別

    這篇文章主要介紹了MySQL update set 和 and的區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05
  • mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效)

    mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效)

    這篇文章主要介紹了mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • MySQL5.7.18修改密碼的方法

    MySQL5.7.18修改密碼的方法

    這篇文章主要介紹了MySQL5.7.18修改密碼的方法,非常不錯,具有參考解決價值,需要的朋友可以參考下
    2017-05-05

最新評論

抚宁县| 都匀市| 中山市| 金阳县| 荥经县| 莱西市| 上思县| 汤阴县| 金沙县| 广饶县| 曲靖市| 乌鲁木齐县| 南康市| 四川省| 托克托县| 岳普湖县| 平南县| 九龙坡区| 伊金霍洛旗| 桃园市| 苏州市| 保山市| 张家口市| 新泰市| 云浮市| 武夷山市| 萍乡市| 丰城市| 和田市| 景洪市| 鄂州市| 常山县| 尼勒克县| 克拉玛依市| 文山县| 武城县| 碌曲县| 棋牌| 博兴县| 新营市| 大足县|