mysql数据库里空值变成0_MySQL数据库 null转为0,及一些case when用法

本文介绍了SQL中处理空值的IFNULL和IF函数,以及CASE语句的使用方法。在进行数据库查询时,对于空值的处理常常至关重要。IFNULL函数允许在表达式为NULL时返回指定的默认值,而IF函数则根据条件返回不同的结果。CASE语句则提供了更复杂的条件判断,可以根据不同条件返回不同的结果值。理解并熟练运用这些函数和语句,能够帮助提升SQL查询的灵活性和准确性。
摘要由CSDN通过智能技术生成

1、如果为空返回0

select ifnull(null,0)

应用情景,如果在进行右连接或者左连接时,有一些为空的字段,可以进行这样的处理。

select ifnull( (B.submission_time-A.submission_time),0) from A right join B on 条件。

2、如果为空返回0,否则返回1

select if(isnull(col),0,1) as col.

MYSQL 中的IFNULL函数说明:

IFNULL(expr1,expr2)

如果expr1是NULL,IFNULL()返回expr2,否则它返回expr2。

IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。

mysql> select IFNULL(1,0);

->1

mysql> select IFNULL(0,10);

->0

mysql> select IFNULL(1/0,10);

->10

mysql> select IFNULL(1/0,'yes');

-> 'yes'

IF(expr1,expr2,expr3)

如果expr1是TRUE,那么IF()返回expr2,否则它返回expr3。

IF()返回一个数字或字符串值,取决于它被使用的上下文。

mysql> select IF(1>2,2,3);

->3

mysql> select IF(1<2,'yes','no');

-> 'yes'

mysql> select IF(strcmp('test','test1'),'yes','no');

-> 'no'

expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。

mysql> select IF(0.1,1,0);

->0

mysql> select IF(0.1<>0,1,0);

->1

在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值, 导致测试IF(0)。这可能不是你期望的。

在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。

sql 里 符号<> 于 != 的区别

<> 与!=都是不等于的意思,但是一般都是用<>来代替不等于,因为<>在任何SQL中都起作用,但是!=在sql2000中用到,则是语法错误,不兼容的。

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END

返回result,其中value=compare-value

mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END;

-> "one"

CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

如果第一个条件为真,返回result。如果没有匹配的result值,那么结果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。

mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END;

-> "true"

mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END;

-> NULL

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,使用CASE WHEN语句处理空值有一些特殊之处。引用提到,null的判断不能使用=进行判断,而是要使用IS或IS NOT。所以,在处理空值的时候,可以使用以下的方式: CASE WHEN column IS NULL THEN 'A' ELSE 'B' END 在这个例子中,当column为空时,返回'A',否则返回'B'。需要注意的是,在判断空值时,要使用IS NULL或IS NOT NULL来进行判断,而不是使用=或<>。引用中提到,CASE WHEN语句类似于Java中的switch语句,可以根据条件灵活地选择不同的值。 另外,引用中的例子中,使用了(case data when null then 'A' else 'B' end) 'C'的语法是有问题的,因为case后面的值不能直接与null进行比较。正确的写法应该是使用IS NULL来判断空值,如下所示: CASE WHEN data IS NULL THEN 'A' ELSE 'B' END AS C 这样就可以将判断结果命名为C,并根据是否为空来赋予对应的值。希望这个解答能够解决你的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL中的case when 中对于NULL值判断的坑](https://blog.csdn.net/weixin_30963127/article/details/113301033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Mysql case when 如何做空值与非空判断](https://blog.csdn.net/weixin_45887275/article/details/122476118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值