Преобразование в символ, но завершено с пустым - PullRequest
0 голосов
/ 15 декабря 2010
SELECT 
 ISNULL(CONVERT(CHAR(8), A.field1), REPLICATE(' ', 8)) + 
 ISNULL(CONVERT(CHAR(10), A.field2), REPLICATE(' ', 10)) 
from #tmpTable a

Я должен конкатировать какое-то поле.Field1 и Field2 являются целыми числами, когда я конвертирую в char, они должны иметь определенный размер.Если значение поля field1 равно 123, результат должен быть равен 123 (с пробелом).

В конце я хочу что-то вроде этого:

123        456
985454     232355

Если значение равно нулю,У меня есть пустое место из 8 или 10 пробелов

Есть идеи?

Спасибо,

Update1: мне нужен результат

         1001335
         1001335
12401886 10994

alt text

1 Ответ

3 голосов
/ 15 декабря 2010

Вам не нужно REPLICATE при преобразовании целого числа в char(8), оно автоматически будет иметь длину 8 символов.

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

ОБНОВЛЕНИЕ

Извинения, вам нужно преобразовать в char перед IsNull, иначе это будет ноль.

Вот так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...