Mysql字段为null的加减乘除运算方式

吾爱主题 阅读:130 2022-11-22 16:28:00 评论:0

Mysql字段为null的加减乘除运算

数据库表test_table

如下查询:

select 
id,
total,
used,
(total - used) as have 
from test_table;

查询结果:

解决办法

使用IFNULL 函数来解决NULL值问题

select 
id,
IFNULL(total,0) as total,
IFNULL(used,0) as used,
(IFNULL(total,0) - IFNULL(used,0)) as have 
from test_table;

查询结果:

数据库关于null不参与运算的坑

举个例子:(阅读时:请记住这个字段以及它的值 )

如果数据库表里字段值为 null 时,那么在写sql语句用这个值去做比较运算时(一般看见 null 或者参数类型为 string 时 也没有人去做加减乘除),除了 is nl 或者 is not nlll 没有其他操作, 有时 字段类型string ,值为 "2" 时, 会用 <> 如果数据库表里字段值为 null 时,那么在写sql语句用这个值去做比较运算时(一般看见 null 或者参数类型为 string 时 也没有人去做加减乘除),除了 is null 或者 is not null 没有其他操作, 有时 字段类型string ,值为 "2" 时, 会用 <> (不等于)] 判断,这都没问题,问题出现在 null 与其他值同时存在这个 当前字段 下,那么用 <> 会造成 mysql 查询不到数据,因为 <>"2" 不会把 null 过滤出去,此时 null 是参与运算的,所以sql语句应当调整为 坑 is null(is not null) and 坑=“2”(坑<>“2”) 这种写法,sql执行之后才会是我们想要的结果。

发生场景

Mybatis框架的动态sql 在写xml映射文件时 比如: <if test=" 坑 = ‘2’ 或(坑 <> ‘2’) > 这种不实时看数据库,脑子里还想着业务需求怎么实现时(一心二用)

其本质还是对于 基础知识 掌握不扎实,所以不断进步的同时,也不要忘了 夯实基础 个人理解: 动态sql最强大的 不是它的语法和格式的优点,首先 它并没有原生sql语句的可读性高,其次 动态sql本质也 仅仅 就起到一个sql语句拼接的作用,它真正强大的点是 <forEach> 这个可以遍历集合的标签,这是原生sql语句无法做到的事情,所以在没有对 集合 进行操作的情况下,尽量用原生sql去做。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文地址:https://blog.csdn.net/wangqing84411433/article/details/102653793

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容