Ab SQL Server 2012 können Sie numerische Typen mit T-SQL FORMAT()
formatieren Funktion. Diese Funktion akzeptiert drei Argumente; die Zahl, das Format und ein optionales „Kultur“-Argument.
Es gibt einen formatierten String vom Typ nvarchar zurück .
Das Format wird als Formatstring geliefert. Ein Formatstring definiert, wie die Ausgabe formatiert werden soll.
Hier ist ein Beispiel:
SELECT FORMAT(1, 'N');
Ergebnis:
1.00
In diesem Fall habe ich N
verwendet als zweites Argument. Dies ist der standardmäßige numerische Formatbezeichner für Zahl. Dieser spezielle Formatbezeichner (N
) führt dazu, dass die Ausgabe mit ganzzahligen und dezimalen Ziffern, Gruppentrennzeichen und einem Dezimaltrennzeichen mit optionalem negativen Vorzeichen formatiert wird. Bei diesem Argument wird die Groß-/Kleinschreibung nicht beachtet, also entweder N
oder n
ist in Ordnung.
Nachkommastellen
Hier ist ein weiteres Beispiel, diesmal mit N1
um anzugeben, dass wir nur eine Dezimalstelle wollen:
SELECT FORMAT(1, 'N1');
Ergebnis:
1.0
Sie können aber auch die Anzahl der Nachkommastellen erhöhen:
SELECT FORMAT(1, 'N7');
Ergebnis:
1.0000000
In diesen Beispielen ist die 1
und 7
werden als Präzisionsspezifizierer bezeichnet .
Genauigkeitsbezeichner sind optional. Sie können ein Wert von 0 bis 99 sein, der die Genauigkeit des Ergebnisses angibt. Wie es funktioniert, hängt vom verwendeten Formatbezeichner ab. Bei einigen Formatbezeichnern wird die Gesamtzahl der Stellen im Ergebnis angegeben, bei anderen die Anzahl der Dezimalstellen. In anderen Fällen wird es vollständig ignoriert. Sehen Sie sich die vollständige Liste der standardmäßigen numerischen Formatbezeichner an, um zu sehen, wie sich Genauigkeitsbezeichner auf die Ausgabe der einzelnen Formatbezeichner auswirken.
Prozent
Die folgenden Beispiele verwenden das P
-Argument, das die Zahl als Prozentwert formatiert. Es multipliziert die Zahl mit 100 und fügt dann ein lokalisiertes Prozentzeichen hinzu.
SELECT FORMAT(1, 'P') AS 'Example 1', FORMAT(.375, 'P') AS 'Example 2', FORMAT(.0375, 'P', 'tr-tr') AS 'Example 3';
Ergebnis:
Example 1 Example 2 Example 3 --------- --------- --------- 100.00 % 37.50 % %3,75
Beachten Sie, dass „Beispiel 3“ ein drittes Argument enthält, das die in der Ausgabe zu verwendende Kultur angibt. In diesem Fall verwende ich tr-tr
für Türkisch. Dies führt dazu, dass das Prozentzeichen der Zahl vorangestellt wird (statt wie die anderen angehängt). Es führt auch dazu, dass ein Komma als Dezimaltrennzeichen verwendet wird.
Wenn Sie das Argument „Kultur“ nicht angeben, wird die Sprache der aktuellen Sitzung verwendet.
Wie Sie sich vorstellen können, könnten Sie je nach Ihrer aktuellen Sprache oder dem Wert eines „kulturellen“ Arguments ganz unterschiedliche Ergebnisse erzielen. Weitere Beispiele finden Sie unter Wie sich Spracheinstellungen auf Ihre FORMAT()-Ergebnisse auswirken können.
Währung
Sie können C
verwenden um einen Währungswert zurückzugeben.
SELECT FORMAT(1, 'C');
Ergebnis:
$1.00
Sie können auch das Gebietsschema als dritten Parameter hinzufügen.
Hier sind einige Beispiele:
SELECT FORMAT(1, 'C', 'fr-FR') AS France, FORMAT(1, 'C', 'th-TH') AS Thailand, FORMAT(1, 'C', 'ja-JP') AS Japan;
Ergebnis:
France Thailand Japan ------ -------- ----- 1,00 € ฿1.00 ¥1
Exponential (wissenschaftlich)
Sie können E
verwenden um die Exponentialschreibweise festzulegen.
SELECT FORMAT(1234.56789, 'E');
Ergebnis:
1.234568E+003
Hexadezimal
Sie können eine Zahl sogar hexadezimal formatieren. Verwenden Sie dazu das X
Argument:
SELECT FORMAT(10, 'X');
Ergebnis:
A
Hexadezimal ist die Basis 16. Daher geht die Zählung 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, bevor sie wieder beginnt (z. B. 10 in Hexadezimal ist das Äquivalent von 16 in Dezimalzahl, und 11 ist das Äquivalent von 17 usw.). Deshalb ergibt das Beispiel hier A
, weil in hexadezimaler Form A
kommt nach 9
.
Hier ist ein weiteres Beispiel, diesmal mit einer größeren Zahl:
SELECT FORMAT(7145, 'X');
Ergebnis:
1BE9
Benutzerdefiniertes Format
Sie können auch Ihr eigenes benutzerdefiniertes Format erstellen, indem Sie eine benutzerdefinierte numerische Formatzeichenfolge verwenden. Dies besteht aus einer Reihe von benutzerdefinierten numerischen Formatbezeichnern, die ein Muster für Ihre Nummer bereitstellen.
Dies ist einfacher mit einem Beispiel erklärt:
SELECT FORMAT(123456789, '##-###-####');
Ergebnis:
12-345-6789
In diesem Fall verwende ich den Ziffernplatzhalter (#
). Der Ziffernplatzhalter ermöglicht es mir, mithilfe von #
ein Format für die Zahl anzugeben Symbol als Platzhalter für jede Zahl.
Kommas
Ein weiteres Beispiel:
SELECT FORMAT(123456789, '#,#');
Ergebnis:
123,456,789
Führende Nullen
Ein weiterer benutzerdefinierter numerischer Formatbezeichner ist Null (0
). Sie können dies verwenden, um eine Zahl mit führenden Nullen aufzufüllen:
SELECT FORMAT(7, '000') AS 'Example 1', FORMAT(123, '0000') AS 'Example 2', FORMAT(123, '00000') AS 'Example 3';
Ergebnis:
Example 1 Example 2 Example 3 --------- --------- --------- 007 0123 00123
Sie können damit auch Nullen entfernen:
SELECT FORMAT(0123, '000') AS 'Example 1', FORMAT(0123, '0000') AS 'Example 2', FORMAT(000123, '00000') AS 'Example 3';
Ergebnis:
Example 1 Example 2 Example 3 --------- --------- --------- 123 0123 00123
Referenz für numerische Formatspezifizierer
Die folgenden Artikel enthalten alle numerischen Formatbezeichner, die Sie mit FORMAT()
verwenden können Funktion, zusammen mit T-SQL-Beispielen.
- Standardzeichenfolgen für numerische Formate
- Benutzerdefinierte numerische Formatzeichenfolgen
Dies sind dieselben Formatbezeichner, die von .NET Framework unterstützt werden (das FORMAT()
Funktion basiert auf dem .NET Framework).
Datum und Uhrzeit
Das FORMAT()
Mit der Funktion können Sie auch Datum und Uhrzeit formatieren.
Datum und Uhrzeit haben einen separaten Satz von Formatbezeichnern:
- Standardformatzeichenfolgen für Datum und Uhrzeit
- Benutzerdefinierte Formatzeichenfolgen für Datum und Uhrzeit