Denne artikel giver en reference til de standard numeriske formatspecifikationer, der kan bruges ved formatering af tal ved hjælp af FORMAT()
funktion i SQL Server. Eksempler inkluderet.
Nogle af eksemplerne bruger præcisionsspecifikationer (disse består af et eller to cifre, der er tilføjet formatspecifikationen). Præcisionsspecifikationer kan være en værdi fra 0 til 99, som angiver nøjagtigheden af resultatet. Hvordan det fungerer afhænger af den formatspecifikation, der bruges. For nogle formatspecifikationer vil det angive det samlede antal cifre i resultatet, for andre vil det angive antallet af decimaler. I andre tilfælde vil det blive ignoreret fuldstændigt.
Format streng | Beskrivelse/eksempel |
---|---|
C eller c | Valuta . Konverterer tallet til en streng, der repræsenterer et valutabeløb. En valgfri præcisionsangivelse kan bruges til at angive antallet af decimaler. Eksempler (ved brug af forskellige kulturer) : 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 eller d | Decimal . Konverterer tallet til en streng af decimalcifre (0-9), med et minustegn foran, hvis tallet er negativt. Dette format understøttes kun for integraltyper. Hvis den (valgfri) præcisionsspecifikation bruges, angiver den det samlede antal cifre i resultatet. Hvis nummeret ikke har så mange cifre, vil det blive udfyldt med nuller til venstre. Eksempler : 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 eller e | Eksponentiel (videnskabelig) . Konverterer tallet til en streng af formen "-d.ddd...E+ddd" eller "-d.ddd...e+ddd", hvor hvert "d" angiver et ciffer (0-9). Strengen starter med et minustegn, hvis tallet er negativt. Præcis ét ciffer går altid foran decimaltegnet. Hvis der bruges en præcisionsangivelse, angiver den, hvor mange cifre der er til højre for decimaltegnet. Hvis det udelades, vises seks cifre til højre for decimaltegnet. Eksempler : 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 eller f | Fast punkt . Konverterer tallet til en streng af formen "-ddd.ddd...", hvor hvert "d" angiver et ciffer (0-9). Strengen starter med et minustegn, hvis tallet er negativt. En valgfri præcisionsangivelse kan bruges til at angive antallet af decimaler. Eksempler : 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 eller g | Generelt . Konverterer tallet til det mere kompakte af enten fikspunkts- eller videnskabelig notation, afhængigt af tallets type, og om der er en præcisionsangivelse til stede. Hvis den (valgfri) præcisionsspecifikation bruges, definerer den det maksimale antal signifikante cifre, der kan forekomme i resultatstrengen. Hvis den udelades, eller hvis værdien er nul, bestemmes præcisionen af taltypen.
Se den officielle .NET-dokumentation for en forklaring på, hvordan nummertypen kan påvirke præcisionen. Du skal muligvis krydshenvise det til den officielle dokumentation for Eksempler : 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 eller n | Nummer . Konverterer tallet til en streng med formen "-d,ddd,ddd.ddd...". Hvis den (valgfri) præcisionsspecifikation bruges, definerer den antallet af cifre til højre for decimaltegnet. Eksempler : 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 eller p | Procent . Multiplicer tallet med 100 og konverter det til en streng, der repræsenterer en procentdel. Hvis præcisionsspecifikationen bruges, definerer den antallet af decimaler. Eksempler : 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 eller r | Rundrejse . Forsøger at sikre, at en numerisk værdi, der konverteres til en streng, parses tilbage til den samme numeriske værdi. Præcisionsspecifikationen ignoreres, når du bruger denne formatspecifikation. BEMÆRK :I .NET understøttes denne formatspecifikation kun af Single , Dobbelt og BigInteger taltyper. Også for Dobbelt værdier, lykkes denne formatspecifikation i nogle tilfælde ikke at runde den oprindelige værdi. Det giver også dårlig ydeevne, når det bruges med Dobbelt og Single typer.
Yderligere anbefaler .NET-dokumentationen, at denne formatspecifikation bruges til BigInteger kun type. Det anbefaler, at Dobbelt typer bruger
Hvad betyder det for SQL Server? Grundlæggende bør du nok undgå denne formatspecifikation i SQL Server. Brug i stedet
Eksempler 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 eller x | Hexadecimal . Konverterer tallet til en streng af hexadecimale cifre.
Det anvendte tilfælde (dvs. Denne formatspecifikation understøttes kun for integraltyper. Hvis den (valgfri) præcisionsspecifikation bruges, angiver den det samlede antal cifre i resultatet. Hvis nummeret ikke har så mange cifre, vil det blive udfyldt med nuller til venstre. Eksempler : 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 | +------+------+--------+--------+--------+----------+------+ |
Ovenstående liste er en komplet liste over gyldige strenge i .NET brugerdefineret numerisk format, baseret på oplysningerne fra den officielle .NET-dokumentation for Standard Numeric Format Strings på Microsofts websted i skrivende stund.
Grunden til at disse er relevante for SQL Server FORMAT()
funktion er, at denne funktion kun accepterer gyldige .NET Framework-formatstrenge.
Ud over ovenstående standard formatstrenge, kan du også bruge tilpasset formatere strenge. Her er en komplet liste over tilpassede numeriske formatstrenge, 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.