我需要通过以下规则将十进制数格式化为char(12)(右对齐):
0 -> .00
0.12 -> .12
9.80 -> 9.80
-2.12 -> 2.12-
我可以使用sql中的字符串格式函数吗?或者我必须写自己的功能?
答案 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