我有两列ActivityCount
和ParentValue
。我创建了一个表达式:
ROUND((ActivityCount / ParentValue) / 100,16) * 100
但问题是它为某些列返回NULL
,我想用NULL
替换0
。我似乎无法找到答案。
答案 0 :(得分:8)
ISNULL(ParentValue) || (ParentValue == 0) ? 0 : ROUND(ISNULL(ActivityCount) ? 0 : ActivityCount / ParentValue / 100,16) * 100
ISNULL(ParentValue) || (ParentValue == 0)
? 0
: ROUND((ISNULL(ActivityCount)
? 0
: ActivityCount / ParentValue) / 100
, 16) * 100
如果 ParentValue
字段为 NULL
或 Zero
,则执行此操作不必执行计算,因为您将遇到 Divide by Zero
错误。因此,只需退回 0 。
如果 ActivityCount
字段为 NULL
,请在执行计算前将其替换为零。
如果可能,我建议在源查询中使用 COALESCE
将NULL值替换为零和计算。
答案 1 :(得分:2)
使用ISNULL(SSIS,而不是SQL表达式)进行测试,使用conditional运算符
ISNULL(ROUND((ActivityCount / ParentValue) / 100,16) * 100) ? 0 : ROUND((ActivityCount / ParentValue) / 100,16) * 100
答案 2 :(得分:2)
尝试如下......它会帮助你......
ISNULL(ROUND((ActivityCount / ParentValue) / 100,16) * 100) || (ROUND((ActivityCount / ParentValue) / 100,16) * 100)= "" ? 0 : ROUND((ActivityCount / ParentValue) / 100,16
答案 3 :(得分:2)
我会说:
ISNULL(ActivityCount) || ISNULL(ParentValue) ? 0 : ROUND((ActivityCount/ParentValue)/100,16)*100
通过这种方式,您可以测试最简单的情况,这种情况会导致NULL结果,而不是在条件中多次计算结束情况。
(话虽如此,其中任何一项技术上都可行。)