SQL算术无效数字
这可能非常简单,但我自己还没有找到解决方案 我只想作为查询的一部分执行此操作SQL算术无效数字,sql,oracle,math,Sql,Oracle,Math,这可能非常简单,但我自己还没有找到解决方案 我只想作为查询的一部分执行此操作 1 - (RELEASE_QUAN/TOTAL_QTY_ORD) 这给了我一个错误(我非常确定这就是造成错误的原因) ORA-01722:无效号码 这个很好用 (RELEASE_QUAN/TOTAL_QTY_ORD) 为什么我不能做第一行 # 完整查询 SELECT REQUEST_DATE, Company, CUSTNO, MISC_ITEM || '-' || CUSER1, V_RELEASES_COMB
1 - (RELEASE_QUAN/TOTAL_QTY_ORD)
这给了我一个错误(我非常确定这就是造成错误的原因)
ORA-01722:无效号码
这个很好用
(RELEASE_QUAN/TOTAL_QTY_ORD)
为什么我不能做第一行
#
完整查询
SELECT
REQUEST_DATE,
Company,
CUSTNO,
MISC_ITEM || '-' || CUSER1,
V_RELEASES_COMB_ACCT_LINK.EXTENDED_PRICE * ((RELEASE_QUAN/TOTAL_QTY_ORD)) || 1 - (RELEASE_QUAN/TOTAL_QTY_ORD)
FROM
IQMS.V_RELEASES_COMB_ACCT_LINK V_RELEASES_COMB_ACCT_LINK
INNER JOIN
IQMS.V_GLACCT V_GLACCT
ON
V_RELEASES_COMB_ACCT_LINK.GLACCT_ID = V_GLACCT.ID
正如我所想,这是一个真正简单的解决方案。我就是想不起来 我用括号括住了这个表达式
(1 - (RELEASE_QUAN/TOTAL_QTY_ORD))
现在可以了。正如我所想,这是一个非常简单的解决方案。我就是想不起来 我用括号括住了这个表达式
(1 - (RELEASE_QUAN/TOTAL_QTY_ORD))
它现在可以工作了。您正在混合字符串串联和乘法 在表达式中
V_RELEASES_COMB_ACCT_LINK.EXTENDED_PRICE * ((RELEASE_QUAN/TOTAL_QTY_ORD)) || 1 - (RELEASE_QUAN/TOTAL_QTY_ORD)
它显示为表达式的计算结果为
(V_RELEASES_COMB_ACCT_LINK.EXTENDED_PRICE * ((RELEASE_QUAN/TOTAL_QTY_ORD)) || 1) - (RELEASE_QUAN/TOTAL_QTY_ORD)
您正在混合字符串串联和乘法 在表达式中
V_RELEASES_COMB_ACCT_LINK.EXTENDED_PRICE * ((RELEASE_QUAN/TOTAL_QTY_ORD)) || 1 - (RELEASE_QUAN/TOTAL_QTY_ORD)
它显示为表达式的计算结果为
(V_RELEASES_COMB_ACCT_LINK.EXTENDED_PRICE * ((RELEASE_QUAN/TOTAL_QTY_ORD)) || 1) - (RELEASE_QUAN/TOTAL_QTY_ORD)
我不知道从“1”中减去一个有效的表达式怎么会导致这个错误。你能分享完整的查询吗?这个表达式不应该产生ORA-01722。我现在将添加完整的查询,但是是的。我认为不应该,但这似乎是
RELEASE\u QUAN
和TOTAL\u quant\u ORD
有效数字的值?总数量订单不为空?现在可以了。它只是需要用括号围起来。我只是一开始没有想到它们。我不知道从“1”中减去一个有效的表达式会导致这个错误。你能分享完整的查询吗?这个表达式不应该产生ORA-01722。我现在将添加完整的查询,但是是的。我认为不应该,但这似乎是RELEASE\u QUAN
和TOTAL\u quant\u ORD
有效数字的值?总数量订单不为空?现在可以了。它只是需要用括号围起来。我只是一开始没有想到他们的答案比OP的答案好得多:这至少给出了一个解释。比OP的答案好得多:这至少给出了一个解释。严格地说,这仍然是非常糟糕的编码。如果希望将计算的数值结果连接到较长的字符串中,则应将数值结果包装在to_CHAR()
函数中,以明确表示希望将结果视为字符串而不是数字。然后,例如,如果结果是0.9207923048,但您只想连接0.92,您可以很容易地做到:到_CHAR(1-…,'0.99')
,等等。严格地说,这仍然是非常糟糕的编码。如果希望将计算的数值结果连接到较长的字符串中,则应将数值结果包装在to_CHAR()
函数中,以明确表示希望将结果视为字符串而不是数字。然后,例如,如果结果是0.9207923048,但您只想连接0.92,那么您可以很容易地做到:到_CHAR(1-…,'0.99')
,等等。