gpt4 book ai didi

tsql - SQL 检查为零或空

转载 作者:行者123 更新时间:2023-12-04 23:49:25 24 4
gpt4 key购买 nike

嗨,我有一些问题

如果某些算法有问题,需要按列检查是否为空或零

这是一张 table :

col1    col2    col3    col4
1 0 3376 0
2 600 null 14468.5714
3 null 0 0
4 600 3376 null
COALESCE不适用于零“0”值, case它太大了

需要意识到其中的一些
, CAST(COALESCE(col2, (col3/7), (col4/30)) as money) col2
, CAST(COALESCE(col3, (col2*7), (col4/30*7))as money) col3
, CAST(COALESCE(col4, (col3/7*30),(col2*30))as money) col4

如何以最快的方式解决这个问题。比X

最佳答案

COALESCE 允许您用特定值替换 NULL,而 NULLIF 将允许您用 NULL 替换特定值。您可以在 0 上使用后者并最终得到如下结果:

, CAST(
COALESCE(
NULLIF(col2, 0),
NULLIF(col3, 0) / 7,
NULLIF(col4, 0) / 30
) AS money
) AS col2
, CAST(
COALESCE(
NULLIF(col3, 0),
NULLIF(col2, 0) * 7,
NULLIF(col4, 0) / 30 * 7)
) AS money
) AS col3
, CAST(
COALESCE(
NULLIF(col4, 0),
NULLIF(col3, 0) / 7 * 30,
NULLIF(col2, 0) * 30
) AS money
) AS col4

如果你问我的话,仍然相当长,但绝对比使用 CASE 短。每个表达式中的最后一个 NULLIF 可能是不必要的,我将它们留在那里以保持一致性。也许你可以添加第四个参数 0无处不在,只是为了确保结果永远不会是 NULL。

关于tsql - SQL 检查为零或空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com