CASE WHEN NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0) < 0
THEN 0
WHEN NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0) > 3
THEN 3
ELSE NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0)
END AS NUM1
----------等价的算法
DECODE ( SIGN(NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0)) + SIGN(NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0) - 3),
2,3,
-2,0,
NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0)
)
THEN 0
WHEN NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0) > 3
THEN 3
ELSE NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0)
END AS NUM1
----------等价的算法
DECODE ( SIGN(NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0)) + SIGN(NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0) - 3),
2,3,
-2,0,
NVL(TO_NUMBER(COL2 - SUBSTR(COL1, 0,6)), 0)
)
本文探讨了 SQL 中 CASE WHEN 语句与 DECODE 函数的不同实现方式,通过具体示例展示了如何使用这两种方法来处理数值计算场景,并比较了它们的功能相似性。
1万+

被折叠的 条评论
为什么被折叠?



