Dit artikel bevat een referentie voor de aangepaste numerieke notatiespecificaties die kunnen worden gebruikt bij het opmaken van getallen met behulp van de FORMAT()
functie in SQL Server. Voorbeelden inbegrepen.
Tekenreeks opmaken | Beschrijving/voorbeeld |
---|---|
0 | Nul tijdelijke aanduiding . Vervangt de nul door het corresponderende cijfer als er een aanwezig is; anders verschijnt nul in de resultaatreeks. Voorbeelden : SELECT FORMAT(12.34, '0') R1, FORMAT(012.34, '00') R2, FORMAT(12.34, '000') R3, FORMAT(012.34, '0000') R4, FORMAT(12.54, '00') R5; +------+------+------+------+------+ | R1 | R2 | R3 | R4 | R5 | |------+------+------+------+------| | 12 | 12 | 012 | 0012 | 13 | +------+------+------+------+------+ |
# | Cijferplaatsaanduiding . Vervangt het symbool "#" door het corresponderende cijfer, indien aanwezig; anders verschijnt er geen cijfer in de resultaatreeks. Er verschijnt geen cijfer in de resultaatreeks als het corresponderende cijfer in de invoerreeks een niet-significante 0 is. Voorbeelden : SELECT FORMAT(12.34, '#') R1, FORMAT(012.34, '##') R2, FORMAT(12.34, '###') R3, FORMAT(012.34, '####') R4, FORMAT(12.54, '##') R5; +------+------+------+------+------+ | R1 | R2 | R3 | R4 | R5 | |------+------+------+------+------| | 12 | 12 | 12 | 12 | 13 | +------+------+------+------+------+ |
. | Decimaal punt . Bepaalt de locatie van het decimaalteken in de resultaatreeks. Voorbeelden : SELECT FORMAT(12.34, '0.0', 'en-US') R1, FORMAT(12.34, '.00', 'en-US') R2, FORMAT(12.34, '.', 'en-US') R3, FORMAT(12.34, '.00', 'fr-FR') R4; +------+-------+------+-------+ | R1 | R2 | R3 | R4 | |------+-------+------+-------| | 12.3 | 12.34 | 12 | 12,34 | +------+-------+------+-------+ |
, | Groepsscheidingsteken en getalschaling . Kan worden gebruikt als zowel een groepsscheidingsteken (ook bekend als duizendscheidingsteken) en een getalschaalspecificatie.
Om een groepsscheidingsteken op te geven, plaatst u een of meer komma's tussen twee tijdelijke aanduidingen voor cijfers (0 of #) die de integrale cijfers van een getal opmaken. Dit resulteert in het invoegen van een groepsscheidingsteken tussen elke cijfergroep in het integrale deel van de uitvoer. Om een getalschaalspecificatie op te geven, plaatst u een of meer komma's onmiddellijk links van de expliciete of impliciete decimale punt. Voorbeelden – als groepsscheider : SELECT FORMAT(12345678, '#,#', 'en-US') 'US English', FORMAT(12345678, '#,#', 'fr-FR') 'French', FORMAT(12345678, '#,#', 'es-ES') 'Spanish'; +--------------+------------+------------+ | US English | French | Spanish | |--------------+------------+------------| | 12,345,678 | 12 345 678 | 12.345.678 | +--------------+------------+------------+ Voorbeelden – als specificatie voor nummerschaal : SELECT FORMAT(12000, '#,', 'en-US') 'R1', FORMAT(1234567890, '#,', 'en-US') R2, FORMAT(1234567890, '#,,', 'en-US') R3; +------+---------+------+ | R1 | R2 | R3 | |------+---------+------| | 12 | 1234568 | 1235 | +------+---------+------+ Voorbeelden – als beide : SELECT FORMAT(1234567890, '#,#,', 'en-US') R1, FORMAT(1234567890, '#,#,,', 'en-US') R2; +-----------+-------+ | R1 | R2 | |-----------+-------| | 1,234,568 | 1,235 | +-----------+-------+ |
% | Percentage tijdelijke aanduiding . Vermenigvuldigt een getal met 100 en voegt een gelokaliseerd percentagesymbool in de resultaatreeks in. Voorbeelden : SELECT FORMAT(0.1234, '#.# %', 'en-US') R1, FORMAT(0.1235, '#.#%', 'zh-cn') R2, FORMAT(0.125, '#. %', 'en-US') R3, FORMAT(0.1234, '%#.00,', 'tr') R4, FORMAT(0.1234, '#.#%', 'it') R5; +--------+-------+------+--------+-------+ | R1 | R2 | R3 | R4 | R5 | |--------+-------+------+--------+-------| | 12.3 % | 12.4% | 13 % | %12,34 | 12,3% | +--------+-------+------+--------+-------+ |
‰ | Per mille placeholder . Vermenigvuldigt een getal met 1000 en voegt een gelokaliseerd promille-symbool in de resultaatreeks in. Voorbeelden : SELECT FORMAT(0.01234, '#.# ‰', 'en-US') 'R1', FORMAT(0.01235, '#.# ‰', 'en-US') R2, FORMAT(0.0125, '#. ‰', 'en-US') R3, FORMAT(0.01234, '#.# ‰', 'fr-FR') R4; +--------+--------+------+--------+ | R1 | R2 | R3 | R4 | |--------+--------+------+--------| | 12.3 ‰ | 12.4 ‰ | 13 ‰ | 12,3 ‰ | +--------+--------+------+--------+ |
|
Exponentiële notatie . Indien gevolgd door ten minste één nul ( Voorbeelden : SELECT FORMAT(123456789, '0e0') R1, FORMAT(123456789, '0e+0') R2, FORMAT(123456789, '0E+00') R3, FORMAT(1234.56789, '0.0##e+00') R4, FORMAT(12.3456789-12, '0e-0') R5; +------+------+-------+-----------+------+ | R1 | R2 | R3 | R4 | R5 | |------+------+-------+-----------+------| | 1e8 | 1e+8 | 1E+08 | 1.235e+03 | 3e-1 | +------+------+-------+-----------+------+ |
| Escape-personage . Zorgt ervoor dat het volgende teken wordt geïnterpreteerd als een letterlijke in plaats van als een aangepaste indelingsspecificatie. Voorbeeld : SELECT FORMAT(123, '\#0000') Result; +----------+ | Result | |----------| | #0123 | +----------+ |
| Letterlijk tekenreeksscheidingsteken . Geeft aan dat de ingesloten tekens ongewijzigd naar de resultaatreeks moeten worden gekopieerd. Voorbeeld : SELECT FORMAT(23, '## Degrees') Result; +------------+ | Result | |------------| | 23 Degrees | +------------+ |
| Sectiescheidingsteken . Dit is een voorwaardelijke opmaakspecificatie die secties definieert met aparte opmaakreeksen voor positieve, negatieve en nulgetallen. Hierdoor kunt u verschillende opmaak toepassen op een getal, afhankelijk van of de waarde positief, negatief of nul is. Een tekenreeks met aangepaste opmaak kan maximaal drie secties bevatten, gescheiden door puntkomma's.
Houd er rekening mee dat negatieve waarden altijd zonder minteken worden weergegeven wanneer sectiescheidingstekens worden gebruikt. Als u wilt dat de uiteindelijke opgemaakte waarde een minteken heeft, moet u het minteken expliciet opnemen als onderdeel van de tekenreeks voor aangepaste opmaak. Dit geldt ook voor alle andere reeds bestaande opmaak die aan een getal is gekoppeld.
Voorbeeld – één sectie (geen sectiescheidingstekens) SELECT FORMAT(123, '0 (Number)') Positive, FORMAT(-123, '0 (Number)') Negative, FORMAT(0, '0 (Number)') Zero; +--------------+---------------+------------+ | Positive | Negative | Zero | |--------------+---------------+------------| | 123 (Number) | -123 (Number) | 0 (Number) | +--------------+---------------+------------+ Merk op dat het minteken intact blijft, omdat ik geen sectiescheidingstekens heb gebruikt. Voorbeelden – Twee secties : /* EXAMPLE 1 - Same format string, different values */ SELECT FORMAT(123, '0 (Positive or Zero); 0 (Negative)') Positive, FORMAT(-123, '0 (Positive or Zero); 0 (Negative)') Negative, FORMAT(0, '0 (Positive or Zero); 0 (Negative)') Zero; +------------------------+-----------------+----------------------+ | Positive | Negative | Zero | |------------------------+-----------------+----------------------| | 123 (Positive or Zero) | 123 (Negative) | 0 (Positive or Zero) | +------------------------+-----------------+----------------------+ /* EXAMPLE 2 - Rounding. Negative values rounded to zero get formatted under the first format string. */ SELECT FORMAT(0.1, '0 (Positive or Zero); 0 (Negative)') Positive, FORMAT(-0.1, '0 (Positive or Zero); 0 (Negative)') Negative; +----------------------+----------------------+ | Positive | Negative | |----------------------+----------------------| | 0 (Positive or Zero) | 0 (Positive or Zero) | +----------------------+----------------------+ Voorbeelden – Drie secties : /* EXAMPLE 1 - Basic Usage */ SELECT FORMAT(123, '0 (Positive); 0 (Negative); 0 (Zero)') Result; +----------------+ | Result | |----------------| | 123 (Positive) | +----------------+ /* EXAMPLE 2 - Same format string, different values */ SELECT FORMAT(123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Positive', FORMAT(-123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Negative', FORMAT(0, '0 (Positive); 0 (Negative); 0 (Zero)') 'Zero', FORMAT(0.123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Rounded to Zero'; +----------------+----------------+-----------+-------------------+ | Positive | Negative | Zero | Rounded to Zero | |----------------+----------------+-----------+-------------------| | 123 (Positive) | 123 (Negative) | 0 (Zero) | 0 (Zero) | +----------------+----------------+-----------+-------------------+ /* EXAMPLE 3 - Second format string is empty */ SELECT FORMAT(123, '0 (Positive);; 0 (Zero)') 'Positive', FORMAT(-123, '0 (Positive);; 0 (Zero)') 'Negative', FORMAT(0, '0 (Positive);; 0 (Zero)') 'Zero', FORMAT(0.123, '0 (Positive);; 0 (Zero)') 'Rounded to Zero'; +----------------+-----------------+-----------+-------------------+ | Positive | Negative | Zero | Rounded to Zero | |----------------+-----------------+-----------+-------------------| | 123 (Positive) | -123 (Positive) | 0 (Zero) | 0 (Zero) | +----------------+-----------------+-----------+-------------------+ |
Overig | Alle andere tekens. Het teken wordt ongewijzigd naar de resultaatreeks gekopieerd. Voorbeeld : SELECT FORMAT(12, '# °C') Result; +----------+ | Result | |----------| | 12 °C | +----------+ |
De bovenstaande lijst is een volledige lijst met geldige .NET-strings voor aangepaste indeling, gebaseerd op de informatie uit de officiële .NET-documentatie voor Custom Format Strings op de Microsoft-website op het moment van schrijven.
De reden waarom deze relevant zijn voor de SQL Server FORMAT()
functie is dat het alleen geldige tekenreeksen in .NET Framework-indeling accepteert.
Naast de bovenstaande aangepaste format strings, u kunt ook standaard . gebruiken tekenreeksen opmaken. Hier is een volledige lijst met standaard 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.