这是我在开发SQL负载时使用的语法。我想知道为什么需要to_char来执行1除以0的操作。我阅读了to_char页面,但找不到解释。谢谢
SELECT CASE WHEN (1=2) THEN to_char(1/0) ELSE NULL END FROM dual
kpbwa7wx1#
不能除以零。这将导致错误。问题是另一个。在您的示例中,如'(1=2)'始终为false,Oracle不执行表达式'to_char(1/0)',并且始终返回空值。
pwuypxnk2#
为什么你认为你需要to_char?在你贴出的例子中,你肯定不需要:对于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有效负载”的呢?
2条答案
按热度按时间kpbwa7wx1#
不能除以零。这将导致错误。问题是另一个。在您的示例中,如'(1=2)'始终为false,Oracle不执行表达式'to_char(1/0)',并且始终返回空值。
pwuypxnk2#
为什么你认为你需要
to_char
?在你贴出的例子中,你肯定不需要:对于
to_char
:没有它:
如果你删除
to_char
会发生什么?也许你没有发布你真正使用的代码,因为它会帮助我们帮助你。正如你已经被告知的,这是毫无意义的,因为条件从来没有满足,所以Oracle甚至不执行除以零(你应该以某种方式处理)。那么,您究竟是如何“开发SQL有效负载”的呢?