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

Je dois concatter un champ. Field1 et Field2 sont des entiers, quand je convertis en char, ils doivent avoir une taille spécifique. Si la valeur de field1 est 123, le résultat doit être '123' (avec le blanc).Conversion en caractère char mais complet en blanc

À la fin, je veux quelque chose comme ceci:

123  456 
985454  232355 

Si la valeur est nulle, j'ai un espace vide de 8 ou 10 en blanc

Toute idée?

Merci,

Update1: Le résultat est que je dois

  1001335 
     1001335 
12401886 10994 

alt text

+0

Le signe plus dans la 2ème ligne semble être mal –

+0

oui enlevé, mais ce n'est pas le problème –

Répondre

3

Vous n'avez pas besoin REPLICATE lors de la conversion l'entier de char(8) il aura automatiquement une longueur de 8 caractères.

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

MISE À JOUR

Toutes mes excuses, vous devez convertir en char avant la IsNull sinon il sera un zéro.

Comme ceci:

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

Pourriez-vous regarder Update1 –

+0

@ Kris-I - J'ai mis à jour ma réponse, merci – codingbadger

+0

Désolé je ne trouve pas la requête qui produit 0 –

Questions connexes