sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan formateres tal med kommaer i SQL Server

SQL Server giver os en hurtig og nem måde at formatere tal med kommaer indsat på det relevante sted. For eksempel 1234.56 kan blive 1.234,56 . Eller det kan blive 1.234,56 , hvis det er den lokalitet, du bruger.

Eksempel

Vi kan bruge FORMAT() funktion til at formatere tal med kommaer. Når vi bruger denne funktion, sender vi nummeret og en formatstreng. Formatstrengen bestemmer, hvordan tallet vil blive formateret, når det returneres.

FORMAT() funktion returnerer en formateret strengrepræsentation af tallet, baseret på de værdier, vi angiver.

Her er et eksempel til demonstration:

SELECT 
    FORMAT(123456.789, 'N') AS "Number",
    FORMAT(123456.789, 'P') AS "Percent",
    FORMAT(123456.789, 'C') AS "Currency"; 

Resultat:

+------------+----------------+------------+| Nummer | Procent | Valuta ||------------+----------------+-------------|| 123.456,79 | 12.345.678,90 % | 123.456,79 $ |+------------+----------------+------------+

Dette eksempel viser tre af standard numeriske formatstrenge:

  • Hvis vi kun vil have det formaterede tal, kan vi bruge N
  • Hvis vi ønsker det formateret som en procentdel, kan vi bruge P
  • For valuta kan vi bruge C .

SQL Server er smart nok til at kende din nuværende lokalitet (baseret på sproget for den aktuelle session), og formaterer resultatet i henhold til den pågældende lokalitets konventioner. Dette er vigtigt, fordi ikke alle bor i et land, der bruger et komma som tusindtalsseparator og et punktum som decimaltegn.

Desuden er FORMAT() funktion accepterer et tredje valgfrit "kultur"-argument, som gør det muligt eksplicit at angive lokaliteten.

Her er et eksempel på, hvad jeg mener:

SELECT FORMAT(123456.789, 'N', 'de-de') AS "Number", FORMAT(123456.789, 'P', 'de-de') AS "Percent", FORMAT(123456.789, 'C', 'de-de') AS "Currency";

Resultat:

+------------+----------------+-------+ | Nummer | Procent | Valuta ||------------+------------------------+-------------------|| 123.456,79 | 12.345.678,90 % | 123.456,79 € |+------------+----------------+------------------ -+

I dette tilfælde angiver jeg de-de som kulturen, hvilket betyder, at resultaterne vil blive formateret efter tyske konventioner. Vi kan se, at punktum bruges som gruppeseparator, og et komma bruges til separatoren.

Hvis det tredje argument udelades, bruges sproget for den aktuelle session.

Tilpassede formatstrenge

Det er også muligt at bruge brugerdefinerede formatspecifikationer til at konstruere dine egne brugerdefinerede formatstrenge. For eksempel # tegnet er en cifferpladsholder, 0 er en nul pladsholder, kommaet (, ) er en pladsholder for gruppeseparatoren og punktum (. ) er en pladsholder for decimalen separator.

Dette er sandt, uanset hvilken lokalitet der bruges – SQL Server vil finde ud af, hvilke tegn der skal bruges til gruppe- og decimalseparatorerne baseret på den aktuelle lokalitet.

Eksempel:

SELECT 
    FORMAT(123456.789, '###,###,###.##', 'en-us') AS "US English",
    FORMAT(123456.789, '###,###,###.##', 'de-de') AS "German"; 

Resultat:

+--------------+-------------+| amerikansk engelsk | Tysk ||--------------+------------|| 123.456,79 | 123.456,79 |+--------------+------------+

I begge tilfælde brugte jeg den samme formatstreng, men alligevel returnerede SQL Server gruppe- og decimalseparatorerne, der var gældende for den angivne lokalitet (som blev angivet med det tredje "kultur"-argument).

I ovenstående eksempel indeholder formatstrengen flere cifre end det faktiske tal. Uanset hvad valgte SQL Server ikke at returnere nogen foranstillede nuller. Det er fordi vi brugte # formatspecifikation.

Hvis vi ønsker, at SQL Server skal returnere indledende nuller, kan vi bruge 0 formatspecifikation:

SELECT 
    FORMAT(123456.789, '000,000,000.00', 'en-us') AS "US English",
    FORMAT(123456.789, '000,000,000.00', 'de-de') AS "German"; 

Resultat:

+----------------+----------------+| amerikansk engelsk | Tysk ||----------------+----------------|| 000.123.456,79 | 000.123.456,79 |+----------------+----------------+

  1. Hvorfor i SQL kan NULL ikke matche med NULL?

  2. Brug kun tastaturnavigation i Word, Excel og PowerPoint (Del 1:The Ribbon)

  3. Sådan opretter du en tabel fra en SQL-forespørgsel

  4. Find forbindelserne mellem databasemailkonti og databaseprincipper i SQL Server (T-SQL)