这是我在开发 SQL 负载时使用的语法。我想知道为什么需要 to_char 来执行 1 除以 0 操作。我阅读了 to_char 页面但找不到解释。谢谢你
SELECT CASE WHEN (1=2) THEN to_char(1/0) ELSE NULL END FROM dual
不能除以零。这会导致错误。问题是另一个。 在您的示例中,“(1=2)”始终为 false Oracle 不会执行表达式“to_char(1/0)”并始终返回 null。
您为什么认为您需要
to_char
?在您发布的示例中,您当然不会:
与
to_char
:
SQL> SELECT CASE WHEN (1=2) THEN to_char(1/0) ELSE NULL END result FROM dual;
R
-
没有它:
SQL> SELECT CASE WHEN (1=2) THEN 1/0 ELSE NULL END result FROM dual;
RESULT
----------
SQL>
如果删除
to_char
会发生什么?也许您没有发布您真正使用的代码,因为它会帮助我们帮助您。正如您已经被告知的那样,这是毫无意义的,因为条件永远不会满足,因此 Oracle 甚至不会执行除以零(然后您应该以某种方式处理它)。
那么,您究竟是如何“开发 SQL 有效负载”的?
我知道他遇到的问题,他想说的是,当他使用1=2的情况时,1/0不会发生,然后ELSE语句会触发他想要的,然后他会将语句更改为1= 1 看看 1/0 是否会返回错误,但无论给出什么情况,都会给出错误。这是他正在使用的查询:(SELECT CASE WHEN (1=1) THEN TO_CHAR((1/0)) ELSE 'a' END FROM Dual) = 'a'--