Null的处理

编辑
文档创建者:zsh331 (73316 )     浏览次数:2503次     编辑次数:4次     最近更新:helen 于 2019-01-03     

目录:

1. 描述编辑

我们在建立数据集时,有时候可以会在原表基础上对字段进行加减乘除的运算,此时如果遇到字段中有Null或0值的情况,我们该怎么处理呢?

2. 思路编辑

可以对Null或0值通过数据库表达式进行转换再运算。

3. 示例编辑

3.1 示例(null值运算)
当在做二个字段做运算的时候,只要字段中有null,这时发现语句并不会报错,但是这种结果并不是我们想要的结果。这是因为数据库很多数据库(如oracle)与null进行运算结果为null,所以此时我们就需要对null进行转换了。

准备数据

cp  price    numb
  苹果  80  20
  橘子  35  
  菠萝  45  0
  香蕉  24  
  西瓜  60  15

1)SQL Server 数据库--使用Isnull()函数

SELECT cp, price, numb, price * isnull(numb, 1) AS priceb FROM test_c; 
 --isnull(numb, 1) 当numb的值为空值时,就返回1 
222
2)Oracle 数据库-使用nvl()函数
select cp, price, numb, price * nvl(numb, 1) as priceb from test_c; 
 --nvl(numb, 1) 当numb的值为空值时,就返回1

222

3)MySQL 数据库-使用Coalesce()函数

SELECT cp, price, numb, price * coalesce(numb, 1) AS priceb FROM test_c; 
 -- coalesce(numb, 1) 当numb的值为空值时,就返回1

222

3.2 示例(0值运算)

当我们在做数据集sql运算的时候,可能会遇见字段相除的情况,这个时候可要注意,分母不能为0,例:(sqlserver)

SELECT cp, price, numb, price /numb AS priceb FROM test_c; 

会报如下错误

[SQL]SELECT cp, price, numb, price /numb AS priceb FROM test_c [Err] 22012 - [SQL Server]遇到以零作除数错误。 

如果遇到分母为0的情况,我们可采用sqlserver的nullif()函数,oracle的decode()函数等等

以sql server为例--nullif()函数

nullif(expression,expression):如果两个指定的表达式相等,则返回null。

SELECT cp, price, numb, price /nullif(numb,0) FROM test_c; 
--price/nullif(numb,0) 解释:当numb = 0时,nullif()函数返回为null,任何值与null运算都为null 
222

附件列表


主题: 专题总结
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?只是浏览 [ 去社区提问 ]