Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So formatieren Sie Zahlen in SQL Server

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