sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man formaterar siffror som valuta i SQL Server (T-SQL)

I SQL Server kan du använda T-SQL FORMAT() funktion för att formatera ett tal som en valuta.

FORMAT() funktionen låter dig formatera siffror, datum, valutor, etc. Den accepterar tre argument; numret, formatet och ett valfritt "kultur"-argument. Den här artikeln handlar specifikt om att använda formatargumentet för att ange en valuta.

Exempel 1 – Grundläggande användning

Här är ett exempel på hur du formaterar ett tal som en valuta:

SELECT FORMAT(1234, 'C') Result;

Resultat:

+-----------+
| Result    |
|-----------|
| $1,234.00 |
+-----------+

I det här fallet använde jag C som det andra argumentet. Detta är standardsträngen för numeriskt format för valuta.

Exempel 2 – skiftlägeskänslighet

Detta argument är skiftlägesokänsligt, så antingen C eller c returnerar samma resultat:

SELECT FORMAT(1234, 'c') Result;

Resultat:

+-----------+
| Result    |
|-----------|
| $1,234.00 |
+-----------+

Exempel 3 – Decimaler

Här är ett annat exempel, den här gången med C0 för att ange att vi inte vill ha några decimaler:

SELECT FORMAT(1234, 'C0') Result;

Resultat:

+----------+
| Result   |
|----------|
| $1,234   |
+----------+

Detta kallas för en "precisionsspecificerare", förmodligen för att det låter dig specificera med vilken precision resultatet visas.

Du kan också öka antalet decimaler också:

SELECT FORMAT(1234, 'C4') Result;

Resultat:

+-------------+
| Result      |
|-------------|
| $1,234.0000 |
+-------------+

Exempel 4 – Språk

De tidigare exemplen resulterade alla i att ett dollartecken sattes före numret. Detta är bra om den önskade valutan är i dollar, men vad händer om du behöver visa den i en annan valuta?

Du kan använda ett tredje argument för att ange lokalen. Detta kommer automatiskt att resultera i att lämplig valutasymbol används för det språket:

SELECT FORMAT(1234, 'C', 'fr-FR') Result;

Resultat:

+------------+
| Result     |
|------------|
| 1 234,00 € |
+------------+

Här är några fler lokaler:

SELECT 
  FORMAT(1234, 'C', 'fr-FR') 'France',
  FORMAT(1234, 'C', 'zh-cn') 'China',
  FORMAT(1234, 'C', 'th-TH') 'Thailand',
  FORMAT(1234, 'C', 'de-DE') 'Germany';

Resultat:

+------------+-----------+------------+------------+
| France     | China     | Thailand   | Germany    |
|------------+-----------+------------+------------|
| 1 234,00 € | ¥1,234.00 | ฿1,234.00  | 1.234,00 € |
+------------+-----------+------------+------------+

Om kulturen argumentet är inte specificerat, språket för den aktuella sessionen används.

Så här hittar du språket för den aktuella sessionen och så här ställer du in det.

Observera att det aktuella språket vanligtvis är detsamma som användarens standardspråk, men detta kanske inte är fallet om användaren har ändrat det aktuella språket med SET LANGUAGE . I vilket fall som helst kan du också ta reda på vilket standardspråk som är.

Som du kanske föreställer dig kan du få helt olika resultat beroende på ditt nuvarande språk eller värdet av ett "kultur"-argument. Se Hur språkinställningar kan påverka dina FORMAT()-resultat för fler exempel.


  1. 3 sätt att formatera ett tal till 2 decimaler i Oracle

  2. PDO-bindningsvärden för MySQL IN-sats

  3. Antal rader som påverkas av en UPPDATERING i PL/SQL

  4. T-SQL få antal arbetsdagar mellan 2 datum