2008-09-11 10 views
9

Nous savons tous les capacités de manipulation de chaîne de T-SQL laisse parfois à désirer ...Aligner à droite texte dans SQL Server

J'ai un champ numérique qui doit être sortie en T-SQL comme aligné à droite colonne de texte. Exemple:

Value 
---------- 
    143.55 
    3532.13 
    1.75 

Comment vous y prendre? Une bonne solution doit être claire et compacte, mais souvenez-vous qu'il existe une chose «trop intelligente». Je suis d'accord que c'est le mauvais endroit pour le faire, mais parfois nous sommes coincés par des forces hors de notre contrôle.

Merci.

Répondre

13

Le STR function a un argument de longueur optionnel ainsi qu'un nombre de décimales.

SELECT STR(123.45, 6, 1) 

------ 
123.5 

(1 row(s) affected) 
+0

Bravo! Comment ai-je manqué ça? Notez que STR() prend un flottant, pas un nombre décimal. L'aide SQLServer est très explicite à ce sujet ("... une expression de type de données numérique approximatif (float)"): si vos décimales ont assez de chiffres, arrondir vous causera des problèmes. Ceci est toujours une excellente réponse pour la plupart –

0

Si vous devez le faire dans SQL vous pouvez utiliser le code folowing (Ce code suppose que vous n'avez pas numerics qui sont plus de 40 caractères):

SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
CAST(numColumn AS varchar(40)) FROM YourTable 
2

La meilleure façon est de pad à gauche:

CREATE FUNCTION PadLeft(@PadString nvarchar(100), @PadLength int) 
RETURNS nvarchar(200) 
AS 
begin 
return replicate(' ',@padlength-len(@PadString)) + @PadString 
end 
go 
print dbo.PadLeft('123.456', 20) 
print dbo.PadLeft('1.23', 20) 
Questions connexes