Den här artikeln ger en referens till de anpassade numeriska formatspecifikationerna som kan användas när du formaterar tal med FORMAT()
funktion i SQL Server. Exempel ingår.
Formatera sträng | Beskrivning/exempel |
---|---|
0 | Noll platshållare . Ersätter nollan med motsvarande siffra om en sådan finns; annars visas noll i resultatsträngen. Exempel : 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 | +------+------+------+------+------+ |
# | Sifferplatshållare . Ersätter symbolen "#" med motsvarande siffra om en sådan finns; annars visas ingen siffra i resultatsträngen. Ingen siffra visas i resultatsträngen om motsvarande siffra i inmatningssträngen är en icke-signifikant 0. Exempel : 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 | +------+------+------+------+------+ |
. | Decimalkomma . Bestämmer platsen för decimalavgränsaren i resultatsträngen. Exempel : 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 | +------+-------+------+-------+ |
, | Gruppseparator och nummerskalning . Kan användas både som en gruppseparator (även känd som tusenseparator) och en nummerskalningsspecifikator.
För att ange en gruppavgränsare, placera ett eller flera kommatecken mellan tvåsiffriga platshållare (0 eller #) som formaterar de integrerade siffrorna i ett tal. Detta resulterar i att ett gruppseparatortecken infogas mellan varje nummergrupp i den integrerade delen av utdata. För att ange en nummerskalningsspecifikator, placera ett eller flera kommatecken omedelbart till vänster om den explicita eller implicita decimalkomman. Exempel – Som gruppseparator : 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 | +--------------+------------+------------+ Exempel – Som en nummerskalningsspecifikator : SELECT FORMAT(12000, '#,', 'en-US') 'R1', FORMAT(1234567890, '#,', 'en-US') R2, FORMAT(1234567890, '#,,', 'en-US') R3; +------+---------+------+ | R1 | R2 | R3 | |------+---------+------| | 12 | 1234568 | 1235 | +------+---------+------+ Exempel – som båda : SELECT FORMAT(1234567890, '#,#,', 'en-US') R1, FORMAT(1234567890, '#,#,,', 'en-US') R2; +-----------+-------+ | R1 | R2 | |-----------+-------| | 1,234,568 | 1,235 | +-----------+-------+ |
% | Procentuell platshållare . Multiplicerar ett tal med 100 och infogar en lokaliserad procentsymbol i resultatsträngen. Exempel : 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% | +--------+-------+------+--------+-------+ |
‰ | Promille platshållare . Multiplicerar ett tal med 1000 och infogar en lokaliserad promille-symbol i resultatsträngen. Exempel : 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 ‰ | +--------+--------+------+--------+ |
|
Exponentiell notation . Om den följs av minst en nolla ( Exempel : 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-tecken . Gör att nästa tecken tolkas som en bokstavlig snarare än som en anpassad formatspecifikator. Exempel : SELECT FORMAT(123, '\#0000') Result; +----------+ | Result | |----------| | #0123 | +----------+ |
| Literal strängavgränsare . Indikerar att de bifogade tecknen ska kopieras till resultatsträngen oförändrad. Exempel : SELECT FORMAT(23, '## Degrees') Result; +------------+ | Result | |------------| | 23 Degrees | +------------+ |
| Sektionsavgränsare . Detta är en villkorsformatspecifikation som definierar avsnitt med separata formatsträngar för positiva, negativa och nolltal. Detta gör att du kan tillämpa olika formatering på ett tal beroende på om dess värde är positivt, negativt eller noll. En anpassad formatsträng kan innehålla upp till tre sektioner separerade med semikolon.
Observera att negativa värden alltid visas utan minustecken när sektionsavgränsare används. Om du vill att det slutliga formaterade värdet ska ha ett minustecken, måste du uttryckligen inkludera minustecknet som en del av den anpassade formatsträngen. Detta gäller även för all annan befintlig formatering som är kopplad till ett nummer.
Exempel – en sektion (inga sektionsavgränsare) 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) | +--------------+---------------+------------+ Observera att minustecknet förblir intakt, eftersom jag inte använde några avsnittsavgränsare. Exempel – två sektioner : /* 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) | +----------------------+----------------------+ Exempel – tre avsnitt : /* 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) | +----------------+-----------------+-----------+-------------------+ |
Övrigt | Alla andra karaktärer. Tecknet kopieras till resultatsträngen oförändrad. Exempel : SELECT FORMAT(12, '# °C') Result; +----------+ | Result | |----------| | 12 °C | +----------+ |
Listan ovan är en komplett lista över giltiga strängar för anpassat .NET-format, baserad på informationen från den officiella .NET-dokumentationen för anpassade formatsträngar på Microsofts webbplats i skrivande stund.
Anledningen till att dessa är relevanta för SQL Server FORMAT()
Funktionen är att den endast accepterar giltiga .NET Framework-formatsträngar.
Förutom ovanstående anpassade formatsträngar kan du också använda standard formatera strängar. Här är en fullständig lista över standardsträngar för numeriskt format som du kan använda med SQL Server.
Du kan också formatera datum- och tidsvärden. Se listan över standardsträngar för datum- och tidsformat samt anpassade datum- och tidsformatsträngar som du kan använda med FORMAT()
funktion.
Om du fortfarande försöker förstå vad en formatsträng ens är, se Vad är en formatsträng i SQL Server? för en grundläggande förståelse av formatsträngar och hur de hör ihop med FORMAT()
fungera.