我有一个包含这两列的数据库表:
- 金额:数字 (18,0)
- 小数位数:数字 (18,0)
该表可以存储各种货币的金额,并从金额中删除小数位(我无法更改此数据模型)。例如,可能有这样的两行:
- 1290, 2(这是 12.90 英镑,需要显示为“12.90”)
- 3400, 0(这是3400日元,需要显示为“3400”)
我需要针对 Oracle 和 SQL Server 的 SQL 查询,该查询将使用正确的小数位数格式化每个金额,并保留所有尾随零,如上所示。我无法使用存储过程、报告工具或 Excel。
您的问题是,没有一种简单的方法可以在一个查询中同时为 SQLServer 和 Oracle 执行此操作。
对 SQLServer 执行此操作的正确方法是使用 STR:
Select STR(Amount, 18, DecimalPlaces) from myTable;
对于 Oracle 来说,执行此操作的正确方法是使用 to_char:
SELECT to_char (amount, '99999999999999.'||rpad('',DecimalPlaces, '0'))
from MyTable;
jms 和 Andrew 提出的查询在 Oracle 查询中不起作用,因为 Oracle SQL 使用 LENGTH() 而不是 LEN()。 Oracle 使用 to_char() 而不是 Cast()。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)