如何在Oracle SQL的SELECT语句中实现自定义列的除法运算?
解决Oracle SQL ORA-01722无效数字错误
错误原因
你当前SQL里的'Num1' / 'Num2'是问题核心:单引号包裹的是字符串字面量,不是你定义的列别名。Oracle会尝试把字符串'Num1'转换成数字进行除法运算,这显然会失败,所以抛出ORA-01722错误。
修正后的SQL写法
因为Num1和Num2是你硬编码的固定数值,最简单的写法就是直接用数值计算:
SELECT REQUESTID AS "Request ID", 10 AS "Num1", 5 AS "Num2", 10 / 5 AS "N1_DividedBy_N2_Result" FROM RM.CUSTINCDT;
如果后续需要让Num1和Num2是动态列(比如从表中取值),可以用子查询/CTE先定义这两个列,再引用:
WITH cte AS ( SELECT REQUESTID AS "Request ID", 10 AS "Num1", 5 AS "Num2" FROM RM.CUSTINCDT ) SELECT "Request ID", "Num1", "Num2", "Num1" / "Num2" AS "N1_DividedBy_N2_Result" FROM cte;
执行结果
修正后执行就能得到你期望的结果:
| Request ID | Num1 | Num2 | N1_DividedBy_N2_Result |
|---|---|---|---|
| 14111487 | 10 | 5 | 2 |
| 14116522 | 10 | 5 | 2 |
| 14116477 | 10 | 5 | 2 |
| 14116425 | 10 | 5 | 2 |
内容的提问来源于stack exchange,提问作者Student_OKIE
相关产品推荐
相关产品推荐

