服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - Mysql字段为null的加减乘除运算方式

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

2022-11-22 16:28荒-- Mysql

这篇文章主要介绍了Mysql字段为null的加减乘除运算方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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 坑=“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

延伸 · 阅读

精彩推荐
  • Mysqlmysql生成指定位数的随机数及批量生成随机数的方法

    mysql生成指定位数的随机数及批量生成随机数的方法

    这篇文章主要介绍了mysql生成指定位数的随机数及批量生成随机数的方法,文中给大家介绍了常用mysql函数,需要的朋友可以参考下...

    月下泛舟6992020-09-07
  • MysqlNavicat For MySQL的简单使用教程

    Navicat For MySQL的简单使用教程

    这篇文章主要介绍了Navicat For MySQL的简单使用教程,本文给大家介绍的非常详细,具有一定的参考借鉴价,需要的朋友可以参考下...

    fuwen1688322020-10-05
  • MysqlMySQL中文乱码问题的解决

    MySQL中文乱码问题的解决

    下面要写的是一篇非常无聊的东西,充斥了大量各式各样的编码、转换、客户端、服务器端、连接呃,我自己都不愿意去看它,但想一想,写下来还是有点...

    mysql技术网5212019-10-16
  • Mysql浅析MySQL如何实现事务隔离

    浅析MySQL如何实现事务隔离

    使用过关系型数据库的,应该都事务的概念有所了解,知道事务有 ACID 四个基本属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久...

    JJian8872021-08-24
  • MysqlMySql采用GROUP_CONCAT合并多条数据显示的方法

    MySql采用GROUP_CONCAT合并多条数据显示的方法

    这篇文章主要介绍了MySql采用GROUP_CONCAT合并多条数据显示的方法,是MySQL数据库程序设计中常见的实用技巧,需要的朋友可以参考下 ...

    shichen20144652020-04-21
  • MysqlMySQL 到底是如何做到多版本并发的

    MySQL 到底是如何做到多版本并发的

    这篇文章主要介绍了 MySQL到底是如何做到多版本并发的原理。大家一起来阅读下文吧...

    SH的全栈笔记7072021-09-24
  • MysqlMysql命令大全(详细篇)

    Mysql命令大全(详细篇)

    这篇文章主要介绍了Mysql命令大全,这里整理的算是比较详细的,需要的朋友可以参考下 ...

    MYSQL教程网2022020-05-20
  • MysqlMySQL的LEFT JOIN表连接的进阶学习教程

    MySQL的LEFT JOIN表连接的进阶学习教程

    这篇文章主要介绍了MySQL的LEFT JOIN表连接的进阶学习教程,包括对左连接的查询效率分析以及相关建议,需要的朋友可以参考下 ...

    KimiChen4672020-05-26