Mysql中 IFNULL函數(shù)的使用詳解
概念
在mysql中IFNULL() 函數(shù)用于判斷第一個(gè)表達(dá)式是否為 NULL,如果第一個(gè)值不為NULL就執(zhí)行第一個(gè)值。第一個(gè)值為 NULL 則返回第二個(gè)參數(shù)的值。
語法
IFNULL(a, b)
Demo 舉例說明
創(chuàng)建表
create table student_one( sno varchar(20) not null primary key, sname varchar(20) not null, ssex varchar(20) not null, sbirthday datetime, class varchar(20) )charset=utf8;
加入數(shù)據(jù)
insert into student_one values('1','陳奇','男','2000-11-02','1'); insert into student_one values('2','陳飛','男','1999-12-05','2'); insert into student_one values('3','周杰','女','1989-03-01','3'); insert into student_one values('4','昆凌','男','1989-04-15','4'); insert into student_one values('5','王麗','女','1999-05-16','5'); insert into student_one values('6','蔡蔡','男','2000-08-17','6');
運(yùn)行結(jié)果
舉例一
第一個(gè)參數(shù)不為NULL,返回第一個(gè)參數(shù),下面的代碼中’hello’不為NULL,就返回的是’hello’
SELECT IFNULL('hello', 'world');
運(yùn)行結(jié)果
舉例二
從student_one表里面查詢sno/sname字段,如果sno字段不為空,就返回sno字段,如果為空就返回sname字段。且取別名為‘字段結(jié)果’
SELECT IFNULL(sno,sname) AS '字段結(jié)果' FROM student_one
運(yùn)行結(jié)果
從student_one表里面class=4的行查詢sno或者sname字段
SELECT IFNULL(sno,sname) FROM student_one WHERE class=4
運(yùn)行結(jié)果
業(yè)務(wù)場景下使用舉例
或者 多表 字段 定義為某個(gè)字段 場景如:
ifnull( dga.code ,dr.code) agentCode, 含義說明:總代code,經(jīng)銷商code 作為 別名agentCode的值。
使用場景:當(dāng)經(jīng)銷商上級(jí)有總代理時(shí) 使用總代理的code,否則使用經(jīng)銷商的code的場景。
select ds.type storeType, dr.type rtm, ifnull( dga.code ,dr.code) agentCode, ifnull(dga.agent_name_cn ,dr.name_cn) agentName, dr.code resellerCode, dr.name_cn resellerName, ds.code code FROM dg_store ds LEFT JOIN dg_store_type dst ON dst.id = ds.type LEFT JOIN dg_reseller dr ON dr.code = ds.reseller_code LEFT JOIN dg_general_agent dga ON dga.id = dr.agent_id
查詢結(jié)果示例如下
舉例三
從student_one表里面查詢sno=10的class字段,如果表中沒有class=10的字段,就會(huì)返回0
SELECT IFNULL((SELECT class FROM student_one WHERE sno = 10),0);
運(yùn)行結(jié)果
舉例四
從student_one表里面查詢sno等于1的sname字段,如果為空,就從student_one表里面查詢sno等于2的ssex字段
SELECT IFNULL((SELECT sname from student_one WHERE sno=1),(SELECT ssex from student_one WHERE sno=2));
運(yùn)行結(jié)果
從student_one表里面查詢sno等于1的sname字段,如果為空,就從student_one表里面查詢sno等于2的ssex字段。如果前面的都為空,就從student_one表里面查詢sno等于2的sbirthday字段
SELECT IFNULL(IFNULL((SELECT sname from student_one WHERE sno=1),(SELECT ssex from student_one WHERE sno=2)),(SELECT sbirthday from student_one WHERE sno=2));
運(yùn)行結(jié)果
到此這篇關(guān)于Mysql中 IFNULL函數(shù)的使用詳解的文章就介紹到這了,更多相關(guān)Mysql IFNULL函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中使用load data命令實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入的方法
MySQL支持load data命令的數(shù)據(jù)導(dǎo)入,該方式比直接的insert的效率要高,按照官方的說法是要比insert語句快上20倍2013-10-10MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明
這篇文章主要介紹了MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Navicat中新建MySQL數(shù)據(jù)庫與新建、修改、刪除數(shù)據(jù)表及刪除數(shù)據(jù)庫詳細(xì)操作方法
Navicat是一套快速、可靠并價(jià)格相當(dāng)便宜的數(shù)據(jù)庫管理工具,專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設(shè),這篇文章主要給大家介紹了關(guān)于Navicat中新建MySQL數(shù)據(jù)庫與新建、修改、刪除數(shù)據(jù)表及刪除數(shù)據(jù)庫詳細(xì)操作的相關(guān)資料,需要的朋友可以參考下2023-11-11MySQL數(shù)據(jù)庫INSERT、UPDATE、DELETE以及REPLACE語句的用法詳解
本篇文章是對(duì)MySQL數(shù)據(jù)庫INSERT、UPDATE、DELETE以及REPLACE語句的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06