Aligner à droite les données numériques dans SQL Server
-
09-06-2019 - |
Question
Nous savons tous que les capacités de manipulation de chaînes de T-SQL laissent parfois beaucoup à désirer...
J'ai un champ numérique qui doit être affiché dans T-SQL sous forme de colonne de texte alignée à droite.Exemple:
Value
----------
143.55
3532.13
1.75
Comment procéderiez-vous?Une bonne solution doit être claire et compacte, mais rappelez-vous qu'il existe une chose telle que "trop intelligente".
Je reconnais que ce n'est pas le bon endroit pour faire cela, mais parfois nous sommes coincés par des forces indépendantes de notre volonté.
Merci.
La solution
Le Fonction STR a un argument de longueur facultatif ainsi qu'un argument de nombre de décimales.
SELECT STR(123.45, 6, 1)
------
123.5
(1 row(s) affected)
Autres conseils
Le moyen le plus simple consiste à appuyer à 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)
Si vous DEVEZ le faire en SQL, vous pouvez utiliser le code suivant (ce code suppose que vous n'avez pas de chiffres supérieurs à 40 caractères) :
SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) +
CAST(numColumn AS varchar(40)) FROM YourTable