MySql中的IFNULL、NULLIF和ISNULL用法详解

MySql中的IFNULL、NULLIF和ISNULL用法详解,第1张

今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下:

mysql中isnull,ifnull,nullif的用法如下:

isnull(expr)

的用法:

如expr

为null,那么isnull()

的返回值为

1,否则返回值为

0。

mysql>

select

isnull(1+1)

->

0

mysql>

select

isnull(1/0)

->

1

使用=

的null

值对比通常是错误的。

isnull()

函数

is

null比较 *** 作符具有一些相同的特性。请参见有关is

null

的说明。

IFNULL(expr1,expr2)的用法:

假如expr1

不为

NULL,则

IFNULL()

的返回值为

expr1

否则其返回值为

expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

mysql>

SELECT

IFNULL(1,0)

->

1

mysql>

SELECT

IFNULL(NULL,10)

->

10

mysql>

SELECT

IFNULL(1/0,10)

->

10

mysql>

SELECT

IFNULL(1/0,'yes')

->

'yes'

IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、

REAL或

INTEGER。假设一个基于表达式的表的情况,

或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:

CREATE

TABLE

tmp

SELECT

IFNULL(1,'test')

AS

test;

在这个例子中,测试列的类型为

CHAR(4)。

NULLIF(expr1,expr2)

的用法:

如果expr1

=

expr2

成立,那么返回值为NULL,否则返回值为

expr1。这和CASE

WHEN

expr1

=

expr2

THEN

NULL

ELSE

expr1

END相同。

mysql>

SELECT

NULLIF(1,1)

->

NULL

mysql>

SELECT

NULLIF(1,2)

->

1

如果参数不相等,则

MySQL

两次求得的值为

expr1

以上所述是小编给大家介绍的MySql中的IFNULL、NULLIF和ISNULL用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果expr为null,则返回1,否则返回0

根isnull类似,expr1不为null的情况下,返回expr1,返回expr2

nullif和ifnull完全不同,它表示如果两个表达式相同,则返回null,否则返回expr1的值

个人感觉应该叫null if equals

发音是core or less,英文的意思是联合/合并,在mysql中的用途是返回第一个不是null的值

只有两个参数的情况下,相当于ifnull

用户函数?那应该是自己定义的函数吧

常用的函数有

1、MySQL 提供几个处理null的函数

1)、ifnull(expr1,expr2):如果expr1不为null,则返回expr1,否则返回expr2;

2)、nullif(expr1,expr2):expr1与expr2相等,则返回null,否则返回expr1;

3)、if(expr1,expr2,expr3):类似于三目运算符,expr1为true,返回expr2,否则返回expr3;

4)、isnull(expr1):判断expr1是否为null,expr1为null,返回true,否则返回false。

2、MySQL case函数

CASE 函数是一个流程控制函数,作用同c++中switch语句。有如下两种使用方法:

1)、用值比较

case value

when compareValue1 then result1

when compareValue2 then result2

……

else result

end

用value依次与各compareValue比较,相等则返回对应的result,并退出case函数。

2)、用条件判断

case

when condition1 then result1

when condition2 then result2

……

else result

end

各condition都为布尔表达式,从上到下判断,为true则返回对应的result,并退出case函数。

使用示例:

SELECT student_name,CASE

WHEN student_id<3 THEN ‘初级班’

WHEN student_id<=6 THEN '中级班'

ELSE ‘高级版'

END

FROM student_table

说明:上面语句选择student_name与student_id两列,只是student_id用CASE 函数替换为对应的文字说明。

3、部分时间日期函数

1)、CURTIME():返回完整的时间类型值,如:’2016-08-10 22:13:30‘;

2)、CURDATE():返回当前日期,时间部分为0,如:’2013-08-10 00:00:00‘;

3)、ADDTIME(time1,time2):time1为time或datetime表达式,time2为time表达式,如:

addtime(’2016-08-10 22:20:00‘,’10:10:10')返回2016-08-11 08:30:10

addtime(’2016-08-10 22:20:00‘,’1 10:10:10')返回2016-08-12 08:30:10

addtime(’22:20:00‘,’10:10:10')返回32:30:10,所以只有时分秒时应注意相加后的值是否大于23:59:59!

注:上面的参数值都可带微秒[.xxxxxx]。

4、部分字符串函数

1)、LEFT(param,length):返回包含param左边的length 个字符的字符串。length 大于param 长度时返回整个param。

2)、RIGHT(param,length):返回包含param右边length 个字符的字符串。同理。

最大用处在于param 可以是选出的某个列的数据,如最基础的用法:

select LEFT(e.name,5) from table1 e;

三、常用分组和组函数

常用组函数:

注:distinct:区别的。指定计算是否包含所有重复值。

1、avg([distinct|all]expr):计算多行expr的平均值,其中expr可以是变量、常量或数据列,但其类型必须是数值型;

2、count(*|[distinct|all]expr):计算多行的记录数。expr同上,但数据类型可以是任意类型;

3、max(expr):计算多行expr的最大值,expr同count中;

4、min(expr);

5、sum([distinct|all]expr):计算多行expr的总和,expr可以是变量、常量或数据列,但数据类型必须是数值型。

group by 分组与having过滤:

语法:

#查询结果按分组列不重复的显示。

select * from tableName group by columnName1[,columnName2,……];

说明:对于MySQL 如果被分组的列对应的其它列有多个对应值,则只显示第一条记录的值。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5917625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存