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

作者:荒-- 时间:2024-01-17 23:35:40 

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

数据库表test_table

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

如下查询:

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

查询结果:

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

解决办法

使用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;

查询结果:

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

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

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

Mysql字段为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 坑=&ldquo;2&rdquo;(坑<>&ldquo;2&rdquo;) 这种写法,sql执行之后才会是我们想要的结果。

发生场景

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

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

来源:https://blog.csdn.net/wangqing84411433/article/details/102653793

标签:Mysql,字段,null,加减乘除,运算
0
投稿

猜你喜欢

  • Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】

    2024-05-05 09:30:22
  • Python Pandas创建Dataframe数据框的六种方法汇总

    2023-08-25 07:39:16
  • Mysql5.7修改root密码教程

    2024-01-29 02:20:19
  • 如何使用moment.js获取本周、前n周、后n周开始结束日期及动态计算周数

    2024-05-28 15:40:15
  • python迭代器的使用方法实例

    2022-03-16 18:00:09
  • python实现对doc,txt,xls文档的读写操作

    2021-05-09 20:01:14
  • pygame多种方式实现屏保操作(自动切换、鼠标切换、键盘切换)

    2022-12-08 20:39:49
  • Python实现一元一次与一元二次方程求解

    2022-03-30 14:09:32
  • 利用Python计算KS的实例详解

    2021-10-16 12:24:09
  • python代码区分大小写吗

    2023-11-26 11:23:46
  • pycharm通过anaconda安装pyqt5的教程

    2023-09-06 03:31:37
  • Python3实现带附件的定时发送邮件功能

    2023-07-08 23:33:57
  • vue 监听是否切屏和开启小窗的实现过程

    2024-04-26 17:38:46
  • Java timezone设置和mybatis连接数据库时区设置方式

    2024-01-24 09:43:18
  • Python for循环通过序列索引迭代过程解析

    2021-11-30 05:36:50
  • vue项目中使用axios遇到的相对路径和绝对路径问题

    2024-05-13 09:37:40
  • Python的pycurl包用法简介

    2023-11-27 14:38:21
  • js实现浏览器倒计时跳转页面效果

    2023-07-18 06:49:57
  • Python用户自定义异常的实现

    2023-06-10 10:06:40
  • 关于tensorflow softmax函数用法解析

    2022-10-29 07:42:09
  • asp之家 网络编程 m.aspxhome.com