Best practice für rechts-rechtfertigen würden, von einer Numerischen in TSQL
Was ist die beste Praxis-für rechts-für die Rechtfertigung der numerischen in TSQL?
Muss ich format fester Länge extrahieren der Datei und müssen den Numerischen Feldern Rechtsbündig ausgerichtet werden soll. (Ich bin mit SQL-Server 2005)
Fand ich diese, das scheint ziemlich geradlinig.
right(' '+convert(varchar(20),a.num),12)
Hier ist die vollständige Select-Anweisung
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)
Ich Stelle diese Frage, da ich dieses code-Zeile bei der Arbeit, das scheint WAHNSINNIG Komplex (Es ist auch das entfernen der dezimal-und null-Füllung)
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))
Aktualisiert:
Daniel Pratt die Idee, eine Funktion bekam, mich an Sie SQL# (dem wir). Es hat eine Funktion namens PadLeft, was überraschenderweise hatten die gleichen Parameter und Funktionen wie Daniel Pratt ' s fn_PadRight Funktion definiert in seiner Antwort unten.
Hier ist, wie SQL# Funktion:
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,' ')
Es kann sowohl zahlen und Zeichenketten.
Lesen Sie mehr sorgfältig. Es gibt keinen "Ausgang" außer ein Extrakt Datei. Wie funktioniert ein Datei extrahieren führen Sie die Formatierung der Daten?
Die ursprüngliche Frage haben Sie gesagt, das war für eine "extrahieren" - Datei. Als solche, es klingt nicht, als er die Vermischung von Daten und Präsentation.
Ich würde empfehlen ein normales select-Anweisung und dann die Erzeugung der Datei extrahieren mit einer sprintf-Anweisung für jede Zeile, oder etwas ähnliches. Es ist wirklich halten Sie gesund....
Ich Stimme Ihnen beiden zu, aber dies ist, wie andere Auszüge erstellt, wo in unserem Unternehmen. Ich bin neu zu erstellen Auszüge aus SQL Server, und ich verlasse mich auf das know-how des anderen .NET/SQL-Programmierer in der Firma. Ich weiß, über DTS/SSIS, aber Sie lief in Probleme mit Ihnen.
InformationsquelleAutor Gerhard Weiss | 2009-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das einzige, was ich vorschlagen kann, um mit Hilfe der "wahnsinnige Komplexität" ist, um es zu Kapseln, die in einer oder mehreren Funktionen. Hier ist eine etwas modifizierte version von etwas, das wir verwenden:
InformationsquelleAutor Daniel Pratt
Dein nicht, wie meine Antwort, aber die beste Vorgehensweise ist, um dies zu tun irgendwo anders dann SQL. SQL bedeutete, zu speichern, abzurufen und zu verarbeiten, Daten, die nicht visualisieren können. Nicht formatieren Sie es für die Anzeige. Sie wäre viel besser IMHO eine Konsole-Anwendung, die zieht die Daten dann generiert die Datei.
Aber mit, dass sagte, wenn ich es Tat, bevor, ich habe es wie folgt aus:
Hardcoding Räume so böse, dieser wird probally Pause für eine riesige Zahl, aber dann wieder, wenn Ihre Erzeugung eine Feste Datei, gehen Sie erzeugen Müll sowieso für eine große Anzahl
Bearbeiten
Ken ich habe gelesen, dass die ops post, und ja, er ist die Formatierung der Daten in fester Breite-Datei. Der Punkt ist, dass Sie tun sollten Formatierungen in eine Anwendungsebene, nicht in SQL. Ja, es ist niemand visuell Blick auf die Daten, aber ich denke, ich fühle, wie Sie noch die Formatierung der Daten, wir sind probally Haarspalterei.
Ich bezweifle, dass die Datei, die erstellt wird, durch die Anwendung, die meisten dieser Dinge, die ar durch jobs oder SSIS pacakages oder ähnliches und auch noch nie bekommen, in der Nähe der Anwendung.
InformationsquelleAutor JoshBerke
Die besten Praxis im Allgemeinen wäre, wenn die Datenbank Daten zurückgeben, und die Präsentation-layer-format der Daten. Sollten Sie sich nicht formatieren von Daten in der Datenbank.
Ich jetzt, was der Kommentar weist darauf hin - Sie erstellen eine Datei extrahieren. Ich Frage mich immer noch, wie du gehst, um die Daten aus SQL Server in die Datei. Sicherlich SQL-Server nicht erstellen Sie die Datei über eine Abfrage?
Habe ich noch empfehlen die Trennung der Daten von Ihrer Darstellung, auch wenn dieser Präsentation ist ein fixed-length-Datei. Dies ist das Art of Sache, die wir verwendet, um zu tun "in der guten alten Zeit", aber sollten es vermeiden, heute haben wir Computer schnell genug, um mit Dingen umgehen, wie die Trennung von Bedenken.
Obwohl, das war auch mein Erster Gedanke aus dem Titel, das hat er ausdrücklich gesagt, er war die Herstellung von fester Länge extrahieren Datei.
InformationsquelleAutor John Saunders