我如何修复此代码以使其修剪尾随零和小数点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何修复此代码以使其修剪尾随零和小数点相关的知识,希望对你有一定的参考价值。

我需要修剪尾随的0和小数点,我尝试了以下代码,它将无法正常工作。我正在使用PostgreSQL,最终结果看起来像(从显示1234.00到“1234英尺”)

SELECT TRIM(TRAILING "0" FROM ROUND("Length"::numeric * 3.28084, 2)) || ''ft'' AS "Length"

错误代码我得到:

ERROR:  column "Length" does not exist
LINE 1: SELECT TRIM(TRAILING '0' FROM ROUND("Length"::numeric * 3.28...
                                            ^                       ^
答案

试试这个:

select concat(substring(cast(cast(1234.00 as decimal(10,2)) as varchar(50)),1,
position('.' in cast(cast(1234.00 as decimal(10,2)) as varchar(50)))-1),' ft')
as Length

测试结果:

DB<>Fiddle

更新:

我刚刚发现了一个更容易的

select concat(cast(1234.00 as decimal(10,0)),' ft') as Length
from ...

将1234.00替换为您的列名称并添加“from”子句。

另一答案

我会这样做:

SELECT ("Length"::numeric * 3.28084)::int || 'ft' as Length

你也可以round()。重点是转换为整数,因此您没有小数。

以上是关于我如何修复此代码以使其修剪尾随零和小数点的主要内容,如果未能解决你的问题,请参考以下文章

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

如何修复空白片段?

没有科学记数法的回声数,同时去除尾随零和小数点

如何修复我的代码以使其发送 json 数据作为对邮递员 GET 请求的响应?

如何在 C++ 中优雅地格式化字符串,使其四舍五入到小数点后 6 位,并修剪额外的 '0' 或 '9'

如何更改此代码以使其容易受到 CRLF 注入的影响?