如何从sqlplus中的数字列中删除小数点后的尾随零?
Posted
技术标签:
【中文标题】如何从sqlplus中的数字列中删除小数点后的尾随零?【英文标题】:How to remove trailing zeros after decimal points from number column in sqlplus? 【发布时间】:2018-05-24 11:57:34 【问题描述】:我有一个名为 Amount 的数据库表字段,其类型为 number(38,8),在 sqlplus 中,我已将列格式化为“COLUMN Amount FORMAT 9999999999999999999999999.99999”,但在写入 csv 时,我们总是尝试零。 例如,如果数字是 9.23,那么结果就是 9.2300
例如,如果数字为 9,则结果将为 9.0000
如何删除尾随零。
请帮帮我..
【问题讨论】:
为什么不能将它们转换为varchar
列
【参考方案1】:
您可以使用to_char
和格式代码TM
来实现(请参阅documentation)
SELECT to_char(column, 'TM') FROM table;
例子:
SELECT to_char(9.2300, 'TM') FROM dual; -- returns 9.23
SELECT to_char(9.0000, 'TM') FROM dual; -- returns 9
SELECT to_char(100, 'TM') FROM dual; -- returns 100
SELECT to_char(010, 'TM') FROM dual; -- returns 10
编辑:
与
SELECT round(to_char(column, 'TM'), 5) FROM table;
您可以将结果限制为小数点后 5 位。
SELECT to_char(round(123.654321000, 5), 'TM') FROM dual; -- returns 123.65432
【讨论】:
这不会将输出限制为小数点后 5 位。但是OP可以做例如to_char(round(9.23001, 5), 'TM')
@kfinity 谢谢,它有效!我不认为这是一项强制性要求。【参考方案2】:
TO_NUMBER 函数还会删除小数点后的零。
例如:1.4500 到 1.45、1.9000 到 1.9 等
示例查询:
SELECT TO_NUMBER(column_name) FROM table_name;
【讨论】:
【参考方案3】:试试这个。
select rtrim(rtrim(to_char(column_name), 0 ), '.' ) from table_name;
【讨论】:
以上是关于如何从sqlplus中的数字列中删除小数点后的尾随零?的主要内容,如果未能解决你的问题,请参考以下文章