Denne artikel giver en reference til de brugerdefinerede numeriske formatspecifikationer, der kan bruges ved formatering af tal ved hjælp af FORMAT()
funktion i SQL Server. Eksempler inkluderet.
Format streng | Beskrivelse/eksempel |
---|---|
0 | Nul pladsholder . Erstatter nullet med det tilsvarende ciffer, hvis et er til stede; ellers vises nul i resultatstrengen. Eksempler : 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 | +------+------+------+------+------+ |
# | Ciffer pladsholder . Erstatter "#" symbolet med det tilsvarende ciffer, hvis et er til stede; ellers vises der intet ciffer i resultatstrengen. Der vises intet ciffer i resultatstrengen, hvis det tilsvarende ciffer i inputstrengen er et ikke-signifikant 0. Eksempler : 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 | +------+------+------+------+------+ |
. | Decimaltegn . Bestemmer placeringen af decimalseparatoren i resultatstrengen. Eksempler : 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 | +------+-------+------+-------+ |
, | Gruppeseparator og talskalering . Kan bruges som både en gruppeseparator (også kendt som tusindseparator) og en talskaleringsspecifikator.
For at angive en gruppeseparator skal du placere et eller flere kommaer mellem tocifrede pladsholdere (0 eller #), der formaterer et tals integralcifre. Dette resulterer i, at der indsættes et gruppeseparatortegn mellem hver talgruppe i den integrerede del af outputtet. For at angive en talskaleringsangivelse skal du placere et eller flere kommaer umiddelbart til venstre for det eksplicitte eller implicitte decimaltegn. Eksempler – Som gruppeseparator : 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 | +--------------+------------+------------+ Eksempler – som en talskaleringsspecifikator : SELECT FORMAT(12000, '#,', 'en-US') 'R1', FORMAT(1234567890, '#,', 'en-US') R2, FORMAT(1234567890, '#,,', 'en-US') R3; +------+---------+------+ | R1 | R2 | R3 | |------+---------+------| | 12 | 1234568 | 1235 | +------+---------+------+ Eksempler – som begge : SELECT FORMAT(1234567890, '#,#,', 'en-US') R1, FORMAT(1234567890, '#,#,,', 'en-US') R2; +-----------+-------+ | R1 | R2 | |-----------+-------| | 1,234,568 | 1,235 | +-----------+-------+ |
% | Pladsholder i procent . Multiplicerer et tal med 100 og indsætter et lokaliseret procentsymbol i resultatstrengen. Eksempler : 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 pladsholder . Multiplicerer et tal med 1000 og indsætter et lokaliseret promille-symbol i resultatstrengen. Eksempler : 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 ‰ | +--------+--------+------+--------+ |
|
Eksponentiel notation . Hvis efterfulgt af mindst ét nul ( Eksempler : 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-karakter . Får det næste tegn til at blive fortolket som en bogstavelig snarere end som en brugerdefineret formatangivelse. Eksempel : SELECT FORMAT(123, '\#0000') Result; +----------+ | Result | |----------| | #0123 | +----------+ |
| Literal streng-adskiller . Angiver, at de vedlagte tegn skal kopieres til resultatstrengen uændret. Eksempel : SELECT FORMAT(23, '## Degrees') Result; +------------+ | Result | |------------| | 23 Degrees | +------------+ |
| Sektionsseparator . Dette er en betinget formatangivelse, der definerer sektioner med separate formatstrenge for positive, negative og nultal. Dette giver dig mulighed for at anvende forskellig formatering på et tal, afhængigt af om dets værdi er positiv, negativ eller nul. En streng med tilpasset format kan indeholde op til tre sektioner adskilt af semikolon.
Bemærk, at negative værdier altid vises uden et minustegn, når der bruges sektionsadskillere. Hvis du ønsker, at den endelige formaterede værdi skal have et minustegn, skal du udtrykkeligt inkludere minustegnet som en del af den tilpassede formatstreng. Dette gælder også for enhver anden allerede eksisterende formatering forbundet med et nummer.
Eksempel – Én sektion (ingen sektionsseparatorer) 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) | +--------------+---------------+------------+ Bemærk, at minustegnet forbliver intakt, fordi jeg ikke brugte nogen sektionsseparatorer. Eksempler – to 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) | +----------------------+----------------------+ Eksempler – tre sektioner : /* 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) | +----------------+-----------------+-----------+-------------------+ |
Andet | Alle andre tegn. Tegnet kopieres til resultatstrengen uændret. Eksempel : SELECT FORMAT(12, '# °C') Result; +----------+ | Result | |----------| | 12 °C | +----------+ |
Ovenstående liste er en komplet liste over gyldige strenge i .NET-tilpasset format, baseret på oplysningerne fra den officielle .NET-dokumentation for tilpassede formatstrenge på Microsofts websted i skrivende stund.
Grunden til at disse er relevante for SQL Server FORMAT()
funktion er, at den kun accepterer gyldige .NET Framework-formatstrenge.
Ud over ovenstående tilpassede formatstrenge, kan du også bruge standard formatere strenge. Her er en komplet liste over Standard Numeric Format Strings, som du kan bruge med SQL Server.
Du kan også formatere dato- og tidsværdier. Se listen over standarddato- og tidsformatstrenge samt de tilpassede dato- og tidsformatstrenge, som du kan bruge med FORMAT()
funktion.
Hvis du stadig prøver at forstå, hvad en formatstreng overhovedet er, kan du se Hvad er en formatstreng i SQL Server? for en grundlæggende forståelse af formatstrenge og hvordan de vedrører FORMAT()
fungere.