Dit artikel bevat een referentie voor de standaard numerieke notatiespecificaties die kunnen worden gebruikt bij het opmaken van getallen met behulp van de FORMAT()
functie in SQL Server. Voorbeelden inbegrepen.
Sommige voorbeelden gebruiken precisiespecificaties (deze bestaan uit een of twee cijfers die aan de formaatspecificatie worden toegevoegd). Precisiespecificaties kunnen een waarde van 0 tot 99 zijn, die de precisie van het resultaat specificeert. 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.
Tekenreeks opmaken | Beschrijving/voorbeeld |
---|---|
C of c | Valuta . Converteert het getal naar een tekenreeks die een valutabedrag vertegenwoordigt. Een optionele precisiespecificatie kan worden gebruikt om het aantal decimalen te specificeren. Voorbeelden (met verschillende culturen) : SELECT FORMAT(12.34, 'C', 'en-us') R1, FORMAT(012.34, 'C', 'iv') R2, FORMAT(12.34, 'C0', 'ja-jp') R3, FORMAT(12.54, 'c', 'vi-vn') R4, FORMAT(12.54, 'c0', 'en-au') R5, FORMAT(12.54, 'c4', 'en-gb') R6; +--------+--------+------+---------+------+----------+ | R1 | R2 | R3 | R4 | R5 | R6 | |--------+--------+------+---------+------+----------| | $12.34 | ¤12.34 | ¥12 | 12,54 ₫ | $13 | £12.5400 | +--------+--------+------+---------+------+----------+ |
D of d | Decimaal . Converteert het getal naar een reeks decimale cijfers (0-9), voorafgegaan door een minteken als het getal negatief is. Deze indeling wordt alleen ondersteund voor integrale typen. Als de (optionele) precisiespecificatie wordt gebruikt, specificeert deze het totale aantal cijfers in het resultaat. Als het nummer niet zoveel cijfers heeft, wordt het opgevuld met nullen aan de linkerkant. Voorbeelden : SELECT FORMAT(123, 'D') R1, FORMAT(123, 'D0') R2, FORMAT(123, 'D3') R3, FORMAT(123, 'd4') R4, FORMAT(0123, 'd5') R5, FORMAT(1.23, 'd') R6; +------+------+------+------+-------+------+ | R1 | R2 | R3 | R4 | R5 | R6 | |------+------+------+------+-------+------| | 123 | 123 | 123 | 0123 | 00123 | NULL | +------+------+------+------+-------+------+ |
E of e | Exponentieel (wetenschappelijk) . Converteert het getal naar een tekenreeks van de vorm "-d.ddd...E+ddd" of "-d.ddd...e+ddd", waarbij elke "d" een cijfer aangeeft (0-9). De string begint met een minteken als het getal negatief is. Precies één cijfer gaat altijd vooraf aan de komma. Als een precisiespecificatie wordt gebruikt, geeft deze aan hoeveel cijfers rechts van de komma staan. Indien weggelaten, verschijnen er zes cijfers rechts van de komma. Voorbeelden : SELECT FORMAT(1024.1234567, 'E') R1, FORMAT(1024.1234567, 'E0') R2, FORMAT(1024.1234567, 'E3') R3, FORMAT(1024.1234567, 'e4') R4, FORMAT(1024.1234567, 'e7') R5; +---------------+--------+------------+-------------+----------------+ | R1 | R2 | R3 | R4 | R5 | |---------------+--------+------------+-------------+----------------| | 1.024123E+003 | 1E+003 | 1.024E+003 | 1.0241e+003 | 1.0241235e+003 | +---------------+--------+------------+-------------+----------------+ |
F of f | Vast punt . Converteert het getal naar een tekenreeks van de vorm "-ddd.ddd..." waarbij elke "d" een cijfer aangeeft (0-9). De string begint met een minteken als het getal negatief is. Een optionele precisiespecificatie kan worden gebruikt om het aantal decimalen te specificeren. Voorbeelden : SELECT FORMAT(12.345, 'F', 'en-us') R1, FORMAT(12.345, 'F0', 'en-us') R2, FORMAT(12.345, 'f3', 'en-us') R3, FORMAT(12.345, 'f4', 'en-us') R4, FORMAT(12.345, 'f5', 'en-us') R5, FORMAT(12.345, 'f', 'vi-vn') R6; +-------+------+--------+---------+----------+-------+ | R1 | R2 | R3 | R4 | R5 | R6 | |-------+------+--------+---------+----------+-------| | 12.35 | 12 | 12.345 | 12.3450 | 12.34500 | 12,35 | +-------+------+--------+---------+----------+-------+ |
G of g | Algemeen . Converteert het getal naar de compactere of vast-komma- of wetenschappelijke notatie, afhankelijk van het type getal en of er een precisiespecificatie aanwezig is. Als de (optionele) precisiespecificatie wordt gebruikt, definieert deze het maximale aantal significante cijfers dat in de resultaatreeks kan voorkomen. Indien weggelaten, of als de waarde nul is, wordt de precisie bepaald door het nummertype.
Zie de officiële .NET-documentatie voor een uitleg over hoe het nummertype de precisie kan beïnvloeden. Mogelijk moet u dat vergelijken met de officiële documentatie voor Voorbeelden : SELECT FORMAT(12.345, 'G', 'en-us') R1, FORMAT(12.345, 'G0', 'en-us') R2, FORMAT(12.345, 'g3', 'en-us') R3, FORMAT(12.345, 'g4', 'en-us') R4, FORMAT(12.345, 'g5', 'en-us') R5, FORMAT(12.345, 'g', 'vi-vn') R6; +--------+--------+------+-------+--------+--------+ | R1 | R2 | R3 | R4 | R5 | R6 | |--------+--------+------+-------+--------+--------| | 12.345 | 12.345 | 12.3 | 12.35 | 12.345 | 12,345 | +--------+--------+------+-------+--------+--------+ |
N of n | Nummer . Converteert het getal naar een tekenreeks van de vorm "-d,ddd,ddd.ddd...". Als de (optionele) precisiespecificatie wordt gebruikt, definieert deze het aantal cijfers rechts van de komma. Voorbeelden : SELECT FORMAT(1234.56, 'N', 'en-us') R1, FORMAT(1234.56, 'N0', 'en-us') R2, FORMAT(1234.56, 'n3', 'en-us') R3, FORMAT(1234.56, 'n4', 'en-us') R4, FORMAT(1234.56, 'n', 'vi-vn') R5; +----------+-------+-----------+------------+----------+ | R1 | R2 | R3 | R4 | R5 | |----------+-------+-----------+------------+----------| | 1,234.56 | 1,235 | 1,234.560 | 1,234.5600 | 1.234,56 | +----------+-------+-----------+------------+----------+ |
P of p | Procent . Vermenigvuldigt het getal met 100 en converteert het naar een tekenreeks die een percentage vertegenwoordigt. Als de precisiespecificatie wordt gebruikt, definieert deze het aantal decimalen. Voorbeelden : SELECT FORMAT(.1234, 'P', 'en-us') R1, FORMAT(.1234, 'P0', 'en-us') R2, FORMAT(.1250, 'p0', 'en-us') R3, FORMAT(.1250, 'p3', 'en-us') R4, FORMAT(.1250, 'p', 'vi-vn') R5; +---------+------+------+----------+--------+ | R1 | R2 | R3 | R4 | R5 | |---------+------+------+----------+--------| | 12.34 % | 12 % | 13 % | 12.500 % | 12,50% | +---------+------+------+----------+--------+ |
R of r | Retour . Pogingen om ervoor te zorgen dat een numerieke waarde die is geconverteerd naar een tekenreeks, wordt teruggeparseerd naar dezelfde numerieke waarde. De precisiespecificatie wordt genegeerd bij gebruik van deze formaatspecificatie. OPMERKING :In .NET wordt deze formaatspecificatie alleen ondersteund door de Single , Dubbel , en BigInteger soorten nummers. Ook voor Dubbel waarden, slaagt deze formaatspecificatie er in sommige gevallen niet in om de oorspronkelijke waarde met succes om te keren. Het biedt ook slechte prestaties bij gebruik met de Double en Enkel soorten.
Verder beveelt de .NET-documentatie aan dat deze indelingsspecificatie wordt gebruikt voor de BigInteger alleen typen. Het beveelt aan dat Dubbel typen gebruiken
Wat betekent dit voor SQL Server? In principe moet u deze indelingsspecificatie in SQL Server waarschijnlijk vermijden. Gebruik in plaats daarvan
Voorbeelden DECLARE @myFloat float, @myReal real; SET @myFloat = '123456789.1234567'; SET @myReal = @myFloat; SELECT @myFloat 'Float Value', @myReal 'Real Value'; SELECT FORMAT(@myFloat, 'R') 'Float R', FORMAT(@myFloat, 'G17') 'Float G17', FORMAT(@myReal, 'R') 'Real R', FORMAT(@myReal, 'G9') 'Real G9'; +------------------+--------------+ | Float Value | Real Value | |------------------+--------------| | 123456789.123457 | 1.234568E+08 | +------------------+--------------+ (1 row affected) +-------------------+-------------------+-----------+-----------+ | Float R | Float G17 | Real R | Real G9 | |-------------------+-------------------+-----------+-----------| | 123456789.1234567 | 123456789.1234567 | 123456792 | 123456792 | +-------------------+-------------------+-----------+-----------+ (1 row affected) |
X of x | Hexadecimaal . Converteert het getal naar een reeks hexadecimale cijfers.
Het gebruikte geval (d.w.z. Deze formaatspecificatie wordt alleen ondersteund voor integrale typen. Als de (optionele) precisiespecificatie wordt gebruikt, specificeert deze het totale aantal cijfers in het resultaat. Als het nummer niet zoveel cijfers heeft, wordt het opgevuld met nullen aan de linkerkant. Voorbeelden : SELECT FORMAT(123, 'X') R1, FORMAT(123, 'x') R2, FORMAT(123, 'x6') R3, FORMAT(12345678, 'x') R4, FORMAT(123, 'x6') R5, FORMAT(-123, 'x') R6, FORMAT(1.23, 'X') R7; +------+------+--------+--------+--------+----------+------+ | R1 | R2 | R3 | R4 | R5 | R6 | R7 | |------+------+--------+--------+--------+----------+------| | 7B | 7b | 00007b | bc614e | 00007b | ffffff85 | NULL | +------+------+--------+--------+--------+----------+------+ |
De bovenstaande lijst is een volledige lijst van geldige .NET aangepaste tekenreeksen voor numerieke formaten, gebaseerd op de informatie uit de officiële .NET-documentatie voor standaard numerieke notatiereeksen op de Microsoft-website op het moment van schrijven.
De reden waarom deze relevant zijn voor de SQL Server FORMAT()
functie is dat deze functie alleen geldige tekenreeksen in .NET Framework-indeling accepteert.
Naast de bovenstaande standaard tekenreeksen opmaken, kunt u ook aangepast . gebruiken tekenreeksen opmaken. Hier is een volledige lijst met aangepaste numerieke notatiereeksen die u met SQL Server kunt gebruiken.
U kunt ook datum- en tijdwaarden opmaken. Bekijk de lijst met standaard tekenreeksen voor datum- en tijdnotatie en de aangepaste tekenreeksen voor datum- en tijdnotatie die u kunt gebruiken met de FORMAT()
functie.
Als u nog steeds probeert te begrijpen wat een indelingsreeks is, raadpleegt u Wat is een indelingsreeks in SQL Server? voor een basisbegrip van opmaakstrings en hoe ze betrekking hebben op de FORMAT()
functie.