Mysql字段为null的加减乘除运算方式
目录 Mysql字段为null的加减乘除运算 解决办法 数据库关于null不参与运算的坑 举个例子:(阅读时:请记住这个字段以及它的值 ) 发生场景 Mysql字段为null的加减乘除运算 数据库表test_ta
目录Mysql字段为null的加减乘除运算解决办法数据库关于null不参与运算的坑举个例子:(阅读时:请记住这个字段以及它的值 )发生场景
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执行之后才会是我们想要的结果。