内容纲要

mysql函数
在查询数据的时候,我们往往会需要对一些空值进行处理,下面几个函数,则可以轻松的完成你的操作。
mysql中的 ifnull() 函数与 if()函数 :

ifnull(expr1,expr2) 

如果expr1不是null,ifnull()返回expr1,否则它返回expr2。

if(expr1,expr2,expr3)

如果expr1不是null, if()返回expr2, 否则 if() 返回expr3。
如图:

oracle函数
1、NVL函数

NVL(a1,a2) 语法:如果a1为null,返回a2,否则返回a1。
NVL2(a1,a2,a3) 语法:如果a1不为null,返回a2;a1为null,返回a3。

2、DECODE函数

DECODE(value,if1,then1,if2,then2,if3,then3,...,else)  

语法:表示如果value 等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。

3、 EXTRACT函数
EXTRACT( fmt , from , date ) 语法:在date时间中获取fmt格式类型的时间。

select extract(year from sysdate) year from dual;  

select extract(month from sysdate) month from dual;  

select extract(day from systimestamp) day from dual;  

select extract(hour from systimestamp) hour from dual;

select extract(minute from systimestamp) minute from dual;  

select extract(second from systimestamp) second from dual;  

其中,获取year month day 时,可以使用date或timestamp类型的值;获取hour minut second时,必须使用timestamp类型的值。

mysql sql语句设置返回值为空时返回想要的字段

SELECT  COALESCE((SELECT IFNULL(name,0) from data2 where id = 100),0)  as name

假设有一个data表有id name 属性

id  name
1   null
2   bbb
select name from data where id = 1

会返回name null
此时我们想要让id的返回值为空时返回0可以使用ifnull函数

SELECT IFNULL(name,0) as name from data where id = 1

返回 name 0
然而当id的值不存在时依然返回null
当运行

SELECT IFNULL(name,0) as name from data where id = 11

时返回 name null
此时我们就可以使用另一个函数COALESCE(null,0)来对上面的sql语句进行封装来达到目的

SELECT  COALESCE((SELECT IFNULL(name,0) from data where id = 100),0)  as name

即使在id的值不存在100时也会显示0

Spread the knowledge