SQL Server Links eine Zahl mit Nullen auffüllen

Die replizierte T-SQL-Funktion in Microsoft SQL Server vereinfacht das Hinzufügen von führenden Nullen zu einem Zahlenwert.

Lassen Sie uns eine Tabelle 'emp' mit erstellen Empid und Gehalt Säulen.

erstellen Sie ein Tisch-Emp (Empid Int, Salary Int);


Fügen Sie einige Beispieldaten in die Tabelle 'emp' ein.

Einfügen in Emp-Werte (1.300); Einfügen in Emp-Werte (2,30); Einfügen in emp-Werte (3,500000); Einfügen in emp-Werte (4,1000);
wähle * aus emp; Empid-Gehalt ----------- ----------- 1 300 2 30 3 500000 4 1000 (4 betroffene Reihen)


Lassen Sie uns jetzt die Gehalt Spalte mit 0s.

Wenn wir nicht wissen, wie viele Nullen wir nach links auffüllen müssen, damit alle Werte gleich lang sind, können wir die maximale Länge von ermitteln Gehalt Spalte mit folgender Abfrage:

SELECT Max (mylength) FROM (SELECT-Länge (Gehalt) AS mylength FROM emp) x; ----------- 6

Die Abfrage gibt einen Wert von 6 zurück, der die maximale Länge in ist Gehalt Spalte wegen Empid 3 mit 500000 Gehalt.

Fügen Sie jetzt die führenden Nullen hinzu Gehalt In dieser Spalte können wir die eingebaute Zeichenkettenfunktion in T-SQL verwenden.

Syntax:

replizieren (Zeichenfolgenausdruck, Ganzzahlausdruck);


SQL Server 2008: Die nachstehende Abfrage hinterlässt eine Spalte mit 0s für das Pad-Gehalt.

Wählen Sie Empid, replizieren ('0', 6 - len (Gehalt)) + Besetzung (Gehalt als Varchar) als Gehalt von emp; Empid-Gehalt ----------- ----------- 1 000300 2 000030 3 500000 4 001000 (4 betroffene Reihen)


In der SQL Server 2008-Versionsabfrage ist der erste Parameter die Zeichenfolge '0'. Im zweiten Parameter subtrahieren wir die Länge von Gehalt Spalte von 6, die unsere maximale Länge ist. Unser Ausdruck weiß also, wie viele Nullen benötigt werden, um das Pad zu belegen und das zu verketten Gehalt Säule.

Mit SQL Server 2012 können Sie die gleiche Ausgabe mit einem einfachen einzeiligen Code erzielen, indem Sie die Funktion FORMAT verwenden.

SQL Server 2012: Linke Pad-Gehaltsspalte mit 0s

SELECT FORMAT (Gehalt, '000000') von emp; Empid-Gehalt ----------- ----------- 1 000300 2 000030 3 500000 4 001000 (4 betroffene Reihen)