Mysql中isnull,ifnull,nullif的用法及語義詳解
Mysql中isnull,ifnull,nullif的用法
在 MySQL 中,ISNULL、IFNULL 和 NULLIF 都與空值(NULL)的判斷或處理有關(guān),但它們的用途和語義不同
1. ISNULL(expr) → 判斷是否為 NULL
功能:返回 1(真)如果表達(dá)式為 NULL,否則返回 0(假)
示例:
SELECT ISNULL(NULL); -- 結(jié)果:1 SELECT ISNULL(123); -- 結(jié)果:0 SELECT ISNULL(name) FROM users;
2. IFNULL(expr1, expr2) → NULL 值替換
功能:如果 expr1 是 NULL,返回 expr2;否則返回 expr1。
常用于:空值替換為默認(rèn)值
示例:
SELECT IFNULL(NULL, 'default'); -- 結(jié)果:'default' SELECT IFNULL('hello', 'default'); -- 結(jié)果:'hello' -- 示例:替換用戶昵稱為空時(shí)的默認(rèn)名稱 SELECT IFNULL(nickname, '匿名') AS display_name FROM users;
等價(jià)于:
CASE WHEN nickname IS NULL THEN '匿名' ELSE nickname END
3. NULLIF(expr1, expr2) → 相等則返回 NULL
功能:如果 expr1 = expr2,返回 NULL;否則返回 expr1
常用于:避免除零錯誤,或“兩個值相同視為無效”的判斷
示例:
SELECT NULLIF(5, 5); -- 結(jié)果:NULL SELECT NULLIF(5, 3); -- 結(jié)果:5 -- 示例:除法避免除以 0 SELECT 10 / NULLIF(denominator, 0) FROM numbers;
總結(jié)
函數(shù)名 | 主要用途 | 示例 | 結(jié)果 |
---|---|---|---|
ISNULL(x) | 判斷是否為 NULL | ISNULL(NULL) | 1 |
IFNULL(x, y) | 如果 x 是 NULL,返回 y | IFNULL(NULL, 'N/A') | ‘N/A’ |
NULLIF(x, y) | 如果 x = y,返回 NULL | NULLIF(5, 5) | NULL |
補(bǔ)充:MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用
在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)進(jìn)行流程的控制。
1、IF()函數(shù)的使用
IF(expr1,expr2,expr3),如果expr1的值為true,則返回expr2的值,如果expr1的值為false,則返回expr3的值。
SELECT IF(TRUE,'A','B'); -- 輸出結(jié)果:A SELECT IF(FALSE,'A','B'); -- 輸出結(jié)果:B
2、IFNULL()函數(shù)的使用
IFNULL(expr1,expr2),如果expr1的值為null,則返回expr2的值,如果expr1的值不為null,則返回expr1的值。
SELECT IFNULL(NULL,'B'); -- 輸出結(jié)果:B SELECT IFNULL('HELLO','B'); -- 輸出結(jié)果:HELLO
3、NULLIF()函數(shù)的使用
NULLIF(expr1,expr2),如果expr1=expr2成立,那么返回值為null,否則返回值為expr1的值。
SELECT NULLIF('A','A'); -- 輸出結(jié)果:null SELECT NULLIF('A','B'); -- 輸出結(jié)果:A
4、ISNULL()函數(shù)的使用
ISNULL(expr),如果expr的值為null,則返回1,如果expr1的值不為null,則返回0。
SELECT ISNULL(NULL); -- 輸出結(jié)果:1 SELECT ISNULL('HELLO'); -- 輸出結(jié)果:0
到此這篇關(guān)于Mysql中isnull,ifnull,nullif的用法的文章就介紹到這了,更多相關(guān)mysql isnull,ifnull,nullif用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的用法解讀
- MySQL中NULLIF?、IFNULL、IF的用法和區(qū)別舉例詳解
- MySql中的IFNULL、NULLIF和ISNULL用法詳解
- MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用
- MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用詳解
- mysql中null(IFNULL,COALESCE和NULLIF)相關(guān)知識點(diǎn)總結(jié)
- MySql中的IFNULL、NULLIF和ISNULL用法詳解
- MYSQL中IFNULL和NULLIF函數(shù)的區(qū)別小結(jié)
相關(guān)文章
Mysql 導(dǎo)入導(dǎo)出csv 中文亂碼問題的解決方法
這篇文章介紹了Mysql 導(dǎo)入導(dǎo)出csv 中文亂碼問題的解決方法,有需要的朋友可以參考一下2013-09-09SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法
由于是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那么怎樣才能按照我們預(yù)想的數(shù)字順序排序呢2013-03-03MySql設(shè)置指定用戶數(shù)據(jù)庫查看查詢權(quán)限
這篇文章主要介紹了MySql設(shè)置指定用戶數(shù)據(jù)庫查看查詢權(quán)限,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10用SELECT... INTO OUTFILE語句導(dǎo)出MySQL數(shù)據(jù)的教程
這篇文章主要介紹了用SELECT... INTO OUTFILE語句導(dǎo)出MySQL數(shù)據(jù)的教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05Windows10下mysql 8.0.19 winx64安裝教程及修改初始密碼
這篇文章主要為大家詳細(xì)介紹了Windows10下mysql 8.0.19 winx64安裝教程及修改初始密碼,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02MySQL中查詢當(dāng)天數(shù)據(jù)中離時(shí)間點(diǎn)最近的數(shù)據(jù)(兩種方法)
在 MySQL 中,你可以使用 ORDER BY 和 LIMIT 語句來查詢當(dāng)天數(shù)據(jù)中離指定時(shí)間最近的數(shù)據(jù),本文給大家介紹MySQL中查詢當(dāng)天數(shù)據(jù)中離時(shí)間點(diǎn)最近的數(shù)據(jù),感興趣的朋友一起看看吧2023-12-12