sql >> Database >  >> RDS >> Sqlserver

Getallen opmaken in SQL Server

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

  1. Hoe de naamreeks in mysql te splitsen?

  2. Hoe tekst af te kappen met een ellips in MariaDB

  3. WHERE-clausules groeperen in Codeigniter

  4. Hoe de huidige instelling voor null-uitvoer in PostgreSQL (psql) te tonen