Les meilleures pratiques pour le droit justifiant un Numérique en TSQL

Quelle est la meilleure pratique pour le droit justifiant un numérique en TSQL?

Je dois formater une longueur fixe extraire le fichier et le besoin d'avoir les champs Numériques justifié à droite. (Je suis à l'aide de SQL Server 2005)

J'ai trouvé cette, ce qui semble assez simple.

right('            '+convert(varchar(20),a.num),12)

Ici, c'est la pleine instruction Select

select
    a.num,
    fixed_number =
        right('            '+convert(varchar(20),a.num),12)
from
    (
    --Test Data
    select num = 2400.00    union all
    select num = 385.00 union all
    select num = 123454.34
    ) a

Results:

num        fixed_number 
---------- ------------ 
2400.00         2400.00
385.00           385.00
123454.34     123454.34

(3 row(s) affected)

Je pose cette question parce que j'ai trouvé cette ligne de code au travail, ce qui semble INCROYABLEMENT complexe (Il est également de supprimer la virgule zéro de remplissage)

CAST(REPLACE(REPLICATE('0', 12 - LEN(REPLACE(CAST(CONVERT(DECIMAL(10,2),@DD8DBAMT) AS VARCHAR),'.',''))) 
+ CAST(CONVERT(DECIMAL(10,2),@DD8DBAMT) AS VARCHAR),'.','') AS VARCHAR(12))

Mise à jour:

Daniel Pratt idée d'utiliser une fonction me regardant SQL# (dont nous-mêmes). Il a une fonction appelée PadLeft, qui curieusement avait les mêmes paramètres et fonctionnalités que Daniel Pratt fn_PadRight fonction définie dans sa réponse ci-dessous.

Ici est de savoir comment utiliser SQL# fonction:

DECLARE @F6D2 AS DECIMAL(8,2)
SET @F6D2 = 0
SQL#.String_PadLeft(@F6D2,9,' ')
SQL#.String_PadLeft(123.400,9,' ')
SQL#.String_PadLeft('abc',9,' ')

Il peut prendre les deux nombres et des chaînes.

Est-il une raison pour laquelle vous êtes désireux de faire de ce droit, la justification de votre tsql code et pas dans la zone de sortie (c'est à dire un site web, les services d'information, etc.)? En essayant de peaufiner la mise en page dans tsql code lui-même est un gros WTF en attente de se produire, à mon humble avis.
Lire plus attentivement. Il n'y a pas de "zone de production" autre qu'un extrait de fichier. Comment fonctionne un extrait de fichier effectuer la mise en forme des données?
La question d'origine n'a dit que c'était pour un "extrait" du fichier. En tant que tel, il ne sonne pas comme il est un mélange de données et de la présentation.
Je vous conseille d'utiliser un tri normale d'instruction select puis générer le fichier d'extrait à l'aide d'un sprintf déclaration pour chaque ligne ou quelque chose de semblable. Il va vraiment vous garder sain d'esprit....
Je suis d'accord avec vous deux, mais c'est la façon dont d'autres extraits ont été créés dans notre société. Je suis nouveau à la création d'extraits de SQL Server et je suis en s'appuyant sur l'expertise de l'autre .NET/programmeurs SQL dans la société. Je sais DTS/SSIS mais ils ont couru dans les questions de l'aide.

OriginalL'auteur Gerhard Weiss | 2009-03-17