转换为十进制时前导零缺失

时间:2019-02-14 03:18:19

标签: php sql

下面是我的SQL查询。我已经将其转换为将小数转换为2个小数点。但是当值的前导数字为零时,它将显示“。##”,其中“#”是数字。

SQL查询: CAST(SHIFTCLOSING.OPENINGAMOUNT AS DECIMAL(18,2)) AS OPENINGAMOUNT

值12.35486 ==> PHP 12.35中的输出(确定)

值0.34845 ==> PHP .3484中的输出(不显示0)

2 个答案:

答案 0 :(得分:1)

您可能正在从数据库中获取一个字符串。您可以尝试使用PHP的printf()函数强制采用一种格式。

如果您使用printf('%.4f', '0.34845')%f用于显示浮点值,而.4则设置四个十进制数字),则会得到前导零为{{1 }}。如果您希望将该值设置为变量,也可以使用0.3484来代替,只是要注意它将是一个字符串而不是数字。

答案 1 :(得分:1)

使用SQL FORMAT,然后将模式设置为'0.##',当丢失时将强制前导零。

FORMAT(CAST(SHIFTCLOSING.OPENINGAMOUNT AS DECIMAL(18,2)), '0.##') AS OPENINGAMOUNT

请参阅:https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-2017