右对齐我已经转换为十进制的字段

时间:2014-08-25 14:47:56

标签: sql sql-server-2008

我试图在sql server management studio中右对齐此字段(cost)以导出到文本文件。我已经格式化了此成本字段以删除小数,该小数有四个位置,并且即使数字只是1,也始终显示至少4位数。

cast(cost*1000 as decimal(10,0)) as cost

结果:

原文:

5.3300         
1.0000         
135.3600   

新:

5330
1000
135360

现在我只需要对齐我的结果,我不知道如何实现这一目标。我正在使用sql server management studio express 2008.非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

这不是您可以在查询中执行的操作。通常格式化由前端应用程序处理。

但是,在SSMS中,如果您想在"结果到文本"中看到您的查询结果。模式,您可以设置属性以将数字数据对齐。

来自工具>>选项>>查询结果>> SQL Server>>:

  1. 在General>>下结果下拉列表的默认目标:结果到文本;
  2. 在结果文字>>下选中右对齐数字值,输出格式为:列对齐。 >>单击“确定”并启动新的查询窗口以运行查询。

答案 1 :(得分:0)

I had a numeric time column of 6, but needed to display in hh:mm:ss.
and resolved this way:

select 
substr(case
when length(trim(char(Num6))) = 5 then '0'||char(Num6)
when length(trim(char(Num6))) = 4 then '00'||char(Num6)
when length(trim(char(Num6))) = 3 then '000'||char(Num6)
when length(trim(char(Num6))) = 2 then '0000'||char(Num6)
when length(trim(char(Num6))) = 1 then '000000'||char(Num6)
else
char(Num6)
end, 1,2)||':'||
substr(case
when length(trim(char(Num6))) = 5 then '0'||char(Num6)
when length(trim(char(Num6))) = 4 then '00'||char(Num6)
when length(trim(char(Num6))) = 3 then '000'||char(Num6)
when length(trim(char(Num6))) = 2 then '0000'||char(Num6)
when length(trim(char(Num6))) = 1 then '000000'||char(Num6)
else
char(Num6)
end, 1,2)||':'||
substr(case
when length(trim(char(Num6))) = 5 then '0'||char(Num6)
when length(trim(char(Num6))) = 4 then '00'||char(Num6)
when length(trim(char(Num6))) = 3 then '000'||char(Num6)
when length(trim(char(Num6))) = 2 then '0000'||char(Num6)
when length(trim(char(Num6))) = 1 then '000000'||char(Num6)
else
char(Num6)
end, 5,2) as record_Time
from mytable;