我有数据需要在其中添加前导零。但问题是数据类型是浮点数。所以每当我添加零时,它会自动省略它们。我试图将前导零添加到它然后尝试将其转换为varchar(50)。
我使用了以下查询(感谢Damien_The_Unbeliever先生):
select '0' + convert (varchar(50), (wallet_sys)) as wallet_sys from NewSysData1
然而结果显示:01.72295e + 009而不是像这样显示:01718738312
我该怎么办?
PS:部分样本数据如下:
1718738312, 8733983312, 9383879312
我希望这些是:
01718738312, 08733983312, 09383879312
答案 0 :(得分:2)
您可以使用str() function和修剪
select '0' + ltrim(rtrim(str(wallet_sys))) as wallet_sys from NewSysData1;
答案 1 :(得分:1)
我使用以下方法完成了此操作:
select right('00' + convert(varchar, MONTH(getdate())),2)
答案 2 :(得分:0)
select right(replicate('0',10)+cast(wallet_sys as varchar),11)
答案 3 :(得分:0)
来自手册:http://technet.microsoft.com/en-us/library/ms187928.aspx
CONVERT的语法:
CONVERT(data_type [(length)],表达式 [,style] )
-
浮动和真实样式
当表达式为 float 或 real 时,样式可以是下表中显示的值之一。其他值处理为0.
-
Value | Output
---------------+---------------------
0 (default) | A maximum of 6 digits. Use in scientific notation, when appropriate.
1 | Always 8 digits. Always use in scientific notation.
2 | Always 16 digits. Always use in scientific notation.
126, 128, 129 | Included for legacy reasons and might be deprecated in a future release.
请注意,没有任何格式化选项允许任何更长的值不是科学记数法。
因此,我们要做的是转换为另一种类型作为临时:
SELECT '0' + Convert(varchar(50), Convert(decimal(38, 10), Convert(float, '1.72295e+009'), 0))
通过更改decimal
类型