2010-12-15 114 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

相關問題