有没有一种简单的方法将十进制格式化为sql中的字符串

时间:2014-07-03 17:39:18

标签: sql-server string decimal

我需要通过以下规则将十进制数格式化为char(12)(右对齐):

0 -> .00
0.12 -> .12
9.80 -> 9.80
-2.12 -> 2.12-

我可以使用sql中的字符串格式函数吗?或者我必须写自己的功能?

3 个答案:

答案 0 :(得分:3)

SQL不是为格式化数字而设计的。您应该处理应用程序中的格式,无论是自定义应用程序,报表工具等等。

当然,您可以使用cast(),convert()和一大堆字符格式来显示您想要的任何SQL,但同样,SQL并不是设计得非常好,而应用程序则是。< / p>

答案 1 :(得分:1)

虽然在SQL中格式化文本并不理想,但我认为以下内容会让您关闭。使用CASE语句移动符号,使用RIGHT()添加填充,使用REPLACE()从1下的值中删除前导零:

SELECT REPLACE(RIGHT('            '+CASE WHEN col1  < 0 
                                            THEN CAST(col1 *-1 AS VARCHAR(12))+'-'
                                         ELSE CAST(col1 AS VARCHAR(12))   
                                    END,12),' 0.','  .')

答案 2 :(得分:0)

LTRIM(STR(ABS(num),8,2)) + CASE SIGN(num) WHEN -1 THEN '-' ELSE '' END