mysql ifnull不起作用原因分析以及解決
結(jié)論
有記錄且該字段為null,則可以用ifnull轉(zhuǎn)換,如果沒有記錄,則不能轉(zhuǎn)換(因為本身就沒有記錄)
命令行運行的截圖
可以看到:
查一條記錄(id=8,實際上沒有id=8的數(shù)據(jù))
- 如果直接查字段(id),則會返回?zé)o記錄,使用ifnull是沒有用的,因為實際上本身就沒有記錄
- 如果查sum(id),雖然返回結(jié)果是null,但這確是真實存在的記錄,使用infull可以對null結(jié)果進行轉(zhuǎn)換
提示:
使用navicat等工具時,無記錄和null顯示基本是一樣的,這就造成了混淆,可以看右下角(無記錄、第1條記錄)的區(qū)別
解決方案
返回結(jié)果為單行
ifnull不能轉(zhuǎn)換的解決方案,一般ifnull不能轉(zhuǎn)換就是因為本身是無記錄,所以可以構(gòu)造出有記錄(該字段為null)的情況,從上面可以看出,一些函數(shù)(count、sum等)可以使無記錄變成有記錄
舉例(適用返回結(jié)果為單行的情況)
比如,上面的例子,查詢不到id返回0,像上面的第3條命令那樣查詢,還是沒記錄,解決方法,可以使用函數(shù)將字段包起來,構(gòu)造出記錄。
返回結(jié)果為單行單列
舉例(適用返回結(jié)果為單行單列的情況)
如果能夠保證返回結(jié)果為單行單列,可以在整體的返回結(jié)果外面包ifnull
最后
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- MySQL中空值和NULL的區(qū)別小結(jié)
- MySQL默認(rèn)值(DEFAULT)和非空約束(NOT NULL)的實現(xiàn)
- MySQL中NULLIF?、IFNULL、IF的用法和區(qū)別舉例詳解
- MySQL語句之條件語句IFNULL和COALESCE的區(qū)別說明
- MySQL中的case?when中對于NULL值判斷的坑及解決
- 檢查MySQL中的列是否為空或Null的常用方法
- mysql?count()函數(shù)不計算null和空值問題
- mysql的case when字段為空,null的問題
- mysql?count?為null時,顯示0的問題
- MySQL?5.7中NULL與‘?‘空字符值的多維度分析(詳解)
相關(guān)文章
MySQL5.1主從同步出現(xiàn)Relay log read failure錯誤解決方法
這篇文章主要介紹了MySQL5.1主從同步出現(xiàn)Relay log read failure錯誤解決方法,需要的朋友可以參考下2014-07-07MySql學(xué)習(xí)筆記之事務(wù)隔離級別詳解
這篇文章主要給大家介紹了關(guān)于MySql學(xué)習(xí)筆記之事務(wù)隔離級別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05mysql5.7.17在win2008R2的64位系統(tǒng)安裝與配置實例
本篇文章主要給大家介紹了mysql5.7.17在win2008R2的64位系統(tǒng)安裝與配置實例,以及在配置過程中遇到的問題解決辦法。2017-11-11mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)
這篇文章主要介紹了mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)的方法,需要的朋友可以參考下2014-05-05