我尝试了很多SQL函数的组合;以便有一个12位数字,包括点字符,包括前导零和小数点。
例如:
对于数字 121.22 ,我想将其格式化为 000000121.22
或数字 12.2 ,我想将其格式化为 000000012.20
或数字 100 ,我想将其格式化为 000000100.00
我使用了以下功能;但如果它为零,我会丢失小数点。
SELECT RIGHT('000000000000'+ STR(CONVERT(VARCHAR,MYNUMBER),12,2),12);
有关如何在Microsoft SQL中解决此问题的任何想法吗?
答案 0 :(得分:1)
如果您使用的是SQL Server 2012或更高版本,则可以使用format()函数。
SELECT FORMAT(121.22, '000000000000.00')
SELECT FORMAT(12.2, '000000000000.00')
000000000121.22
000000000012.20
答案 1 :(得分:0)
SELECT padded_id = REPLACE(STR(id, 12), SPACE(1), '0')
我根据需要添加使用(在SQL服务器中)前导0,将12更改为您希望它的任何总数。
这允许非硬编码值,只需确保设置id或任何要格式化的列/参数。
答案 2 :(得分:0)
代表ms sql versions not in (2012,2014)
:
cast(right('000000000',9-len(floor(the_number))) as varchar)
+ cast( cast(the_number as decimal(10,2))as varchar)
代表ms sql versions in (2012,2014)
:
format(the_number ,'000000000000.00')