在oracle中,为什么1除0需要TO_CHAR函数?

问题描述 投票:0回答:3

这是我在开发 SQL 负载时使用的语法。我想知道为什么需要 to_char 来执行 1 除以 0 操作。我阅读了 to_char 页面但找不到解释。谢谢你

SELECT CASE WHEN (1=2) THEN to_char(1/0) ELSE NULL END FROM dual 
oracle syntax to-char
3个回答
1
投票

不能除以零。这会导致错误。问题是另一个。 在您的示例中,“(1=2)”始终为 false Oracle 不会执行表达式“to_char(1/0)”并始终返回 null。


0
投票

您为什么认为您需要

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 有效负载”的?


0
投票

我知道他遇到的问题,他想说的是,当他使用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'--

© www.soinside.com 2019 - 2024. All rights reserved.