如何从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中的数字列中删除小数点后的尾随零?的主要内容,如果未能解决你的问题,请参考以下文章

带逗号的 Oracle 格式数字删除尾随零小数

从Excel中删除尾随零并将小数点添加到字符串

使用 NSNumberFormatter 生成小数点后尾随零的数字

我如何确保十进制中有一定数量的数字(尾随零)

SQLPlus 在插入时删除 clob 字段中的尾随空格

删除前导零和尾随零并将结果保留到小数点后两位