Vanaf SQL Server 2012 kunt u numerieke typen opmaken met de T-SQL FORMAT()
functie. Deze functie accepteert drie argumenten; het getal, het formaat en een optioneel "cultuur"-argument.
Het retourneert een opgemaakte tekenreeks van het type nvarchar .
Het formaat wordt geleverd als een formaatstring. Een format string definieert hoe de output moet worden opgemaakt.
Hier is een voorbeeld:
SELECT FORMAT(1, 'N');
Resultaat:
1.00
In dit geval gebruikte ik N
als tweede argument. Dit is de standaard numerieke notatiespecificatie voor Getal. Deze specifieke formaatspecificatie (N
) resulteert erin dat de uitvoer wordt opgemaakt met integrale en decimale cijfers, groepsscheidingstekens en een decimaalteken met optioneel minteken. Dit argument is niet hoofdlettergevoelig, dus ofwel N
of n
gaat goed.
Decimaaltekens
Hier is nog een voorbeeld, deze keer met N1
om aan te geven dat we maar één decimaal willen:
SELECT FORMAT(1, 'N1');
Resultaat:
1.0
Maar u kunt ook het aantal decimalen verhogen:
SELECT FORMAT(1, 'N7');
Resultaat:
1.0000000
In deze voorbeelden is de 1
en 7
staan bekend als precisiespecificaties .
Precisiespecificaties zijn optioneel. Ze kunnen een waarde van 0 tot 99 zijn, die de nauwkeurigheid van het resultaat aangeeft. Hoe het werkt, hangt af van de formaatspecificatie die wordt gebruikt. Voor sommige formaatspecificaties specificeert het het totale aantal cijfers in het resultaat, voor andere specificeert het het aantal decimalen. In andere gevallen wordt het helemaal genegeerd. Bekijk de volledige lijst met standaardspecificaties voor numerieke formaten om te zien hoe precisiespecificaties de uitvoer van elke formaatspecificatie beïnvloeden.
Procent
De volgende voorbeelden gebruiken de P
argument, waarmee het getal als een percentage wordt opgemaakt. Het vermenigvuldigt het getal met 100 en voegt vervolgens een gelokaliseerd procentteken toe.
SELECT FORMAT(1, 'P') AS 'Example 1', FORMAT(.375, 'P') AS 'Example 2', FORMAT(.0375, 'P', 'tr-tr') AS 'Example 3';
Resultaat:
Example 1 Example 2 Example 3 --------- --------- --------- 100.00 % 37.50 % %3,75
Merk op dat "Voorbeeld 3" een derde argument bevat, dat de cultuur specificeert die in de uitvoer moet worden gebruikt. In dit geval gebruik ik tr-tr
voor Turks. Dit resulteert erin dat het procentteken aan het getal wordt toegevoegd (in plaats van toegevoegd, zoals de andere). Het resulteert er ook in dat een komma wordt gebruikt als decimaal scheidingsteken.
Als u het argument 'cultuur' niet opgeeft, wordt de taal van de huidige sessie gebruikt.
Zoals je je misschien kunt voorstellen, kun je heel verschillende resultaten krijgen, afhankelijk van je huidige taal of de waarde van een "cultuur" -argument. Zie hoe taalinstellingen uw FORMAT()-resultaten kunnen beïnvloeden voor meer voorbeelden.
Valuta
U kunt C
. gebruiken om een valutawaarde terug te geven.
SELECT FORMAT(1, 'C');
Resultaat:
$1.00
U kunt ook de landinstelling als derde parameter toevoegen.
Hier zijn enkele voorbeelden:
SELECT FORMAT(1, 'C', 'fr-FR') AS France, FORMAT(1, 'C', 'th-TH') AS Thailand, FORMAT(1, 'C', 'ja-JP') AS Japan;
Resultaat:
France Thailand Japan ------ -------- ----- 1,00 € ฿1.00 ¥1
Exponentieel (wetenschappelijk)
U kunt E
. gebruiken om exponentiële notatie te specificeren.
SELECT FORMAT(1234.56789, 'E');
Resultaat:
1.234568E+003
Hexadecimaal
U kunt een getal zelfs als hexadecimaal opmaken. Gebruik hiervoor de X
argument:
SELECT FORMAT(10, 'X');
Resultaat:
A
Hexadecimaal is grondtal 16. Daarom gaat de telling naar 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F voordat u opnieuw begint (bijv. 10 in hexadecimaal is het equivalent van 16 in decimalen, en 11 is het equivalent van 17, enz.). Daarom resulteert het voorbeeld hier in A
, omdat in hexadecimaal, A
komt na 9
.
Hier is nog een voorbeeld, dit keer met een groter aantal:
SELECT FORMAT(7145, 'X');
Resultaat:
1BE9
Aangepast formaat
U kunt ook uw eigen aangepaste indeling maken door een aangepaste tekenreeks voor numerieke opmaak te gebruiken. Dit bestaat uit een reeks aangepaste numerieke notatiespecificaties die een patroon voor uw nummer bieden.
Dit is gemakkelijker uit te leggen met een voorbeeld:
SELECT FORMAT(123456789, '##-###-####');
Resultaat:
12-345-6789
In dit geval gebruik ik de tijdelijke aanduiding voor cijfers (#
). Met de tijdelijke aanduiding voor cijfers kan ik een formaat voor het getal specificeren, met behulp van de #
symbool als tijdelijke aanduiding voor elk nummer.
Komma's
Nog een voorbeeld:
SELECT FORMAT(123456789, '#,#');
Resultaat:
123,456,789
Totale nullen
Een andere aangepaste numerieke notatiespecificatie is nul (0
). U kunt dit gebruiken om een getal met voorloopnullen op te vullen:
SELECT FORMAT(7, '000') AS 'Example 1', FORMAT(123, '0000') AS 'Example 2', FORMAT(123, '00000') AS 'Example 3';
Resultaat:
Example 1 Example 2 Example 3 --------- --------- --------- 007 0123 00123
Je kunt het ook gebruiken om nullen te verwijderen:
SELECT FORMAT(0123, '000') AS 'Example 1', FORMAT(0123, '0000') AS 'Example 2', FORMAT(000123, '00000') AS 'Example 3';
Resultaat:
Example 1 Example 2 Example 3 --------- --------- --------- 123 0123 00123
Referentie numerieke formaatspecificaties
De volgende artikelen bevatten alle numerieke indelingsspecificaties die u kunt gebruiken met de FORMAT()
functie, samen met T-SQL-voorbeelden.
- Standaard numerieke notatietekenreeksen
- Aangepaste numerieke notatietekenreeksen
Dit zijn dezelfde formaatspecificaties die worden ondersteund door het .NET Framework (de FORMAT()
functie is gebaseerd op het .NET Framework).
Datum en tijd
De FORMAT()
functie stelt u ook in staat om datum en tijd te formatteren.
Datum en tijd hebben een aparte set formaatspecificaties:
- Standaard tekenreeksen voor datum- en tijdnotatie
- Aangepaste tekenreeksen voor datum- en tijdnotatie