2010-12-15 66 views
0
SELECT 
ISNULL(CONVERT(CHAR(8), A.field1), REPLICATE(' ', 8)) + 
ISNULL(CONVERT(CHAR(10), A.field2), REPLICATE(' ', 10)) 
from #tmpTable a 

我必须concat一些字段。 Field1和Field2是整数,当我转换为字符时,它们必须具有 特定的大小。如果field1的值是123,结果必须是'123'(空白)。转换为字符,但完成空白

最后我想是这样的:

123  456 
985454  232355 

如果该值为空,我有空白

任何想法的8空白处或10?

感谢,

UPDATE1: 我需要的结果是

  1001335 
     1001335 
12401886 10994 

alt text

+0

第2行中的加号似乎是错误 – 2010-12-15 08:32:28

+0

是删除,但不是问题 – 2010-12-15 08:44:44

回答

3

你不需要REPLICATE当你转换为char(8)的整数它会自动有一个长度8个字符。

 Select Convert(Char(8), IsNull(a.Field1,'')) + 
      Convert(Char(10), IsNull(a.Field2,'')) 
    From #tmpTable 

UPDATE

很抱歉,您需要将IsNull之前转换为char否则这将是一个零。

像这样:

Create Table #t 
(
Field1 int, 
Field2 int 
) 
Insert Into #t 
Select Null, 1001335 
union all 
select Null, 1001335 
union all 
select 1445121, 1001335 
union all 
select 1331445, null 


Select IsNull(Convert(Char(8), a.Field1),'') + 
     IsNull(Convert(Char(10), a.Field2),'') 
From #t a 

Drop table #t 
+0

你能看UPDATE1 – 2010-12-15 08:54:06

+0

@克里斯 - 我 - 我已经更新我的答案,谢谢 – codingbadger 2010-12-15 09:01:58

+0

对不起,我没有找到产生0的查询 – 2010-12-15 09:23:46

相关问题