sql >> Database >  >> RDS >> Sqlserver

Getallen opmaken als valuta in SQL Server (T-SQL)

In SQL Server kunt u de T-SQL-FORMAT() functie om een ​​getal als valuta op te maken.

De FORMAT() functie stelt u in staat getallen, datums, valuta's, enz. op te maken. Het accepteert drie argumenten; het aantal, het formaat en een optioneel "cultuur" -argument. Dit artikel gaat specifiek in op het gebruik van het formaatargument om een ​​valuta op te geven.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld van het opmaken van een getal als valuta:

SELECT FORMAT(1234, 'C') Result;

Resultaat:

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

In dit geval gebruikte ik C als tweede argument. Dit is de standaard numerieke notatiereeks voor Valuta.

Voorbeeld 2 – Hoofdlettergevoeligheid

Dit argument is niet hoofdlettergevoelig, dus ofwel C of c geeft hetzelfde resultaat:

SELECT FORMAT(1234, 'c') Result;

Resultaat:

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

Voorbeeld 3 – decimalen

Hier is nog een voorbeeld, deze keer met C0 om aan te geven dat we geen decimalen willen:

SELECT FORMAT(1234, 'C0') Result;

Resultaat:

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

Dit wordt een "precisiespecificatie" genoemd, waarschijnlijk omdat u hiermee de precisie kunt specificeren waarmee het resultaat wordt weergegeven.

U kunt ook het aantal decimalen verhogen:

SELECT FORMAT(1234, 'C4') Result;

Resultaat:

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

Voorbeeld 4 – Landinstelling

De vorige voorbeelden resulteerden allemaal in een dollarteken dat als voorvoegsel aan het nummer werd toegevoegd. Dit is prima als de gewenste valuta in dollars is, maar wat als u deze in een andere valuta moet weergeven?

U kunt een derde argument gebruiken om de landinstelling op te geven. Dit resulteert automatisch in het gebruik van het juiste valutasymbool voor die landinstelling:

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

Resultaat:

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

Hier zijn nog enkele locaties:

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';

Resultaat:

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

Als de cultuur argument niet is opgegeven, wordt de taal van de huidige sessie gebruikt.

Hier leest u hoe u de taal van de huidige sessie kunt vinden en hoe u deze instelt.

Houd er rekening mee dat de huidige taal meestal hetzelfde is als de standaardtaal van de gebruiker, maar dit is mogelijk niet het geval als de gebruiker de huidige taal heeft gewijzigd met SET LANGUAGE . Je kunt er in ieder geval ook achter komen wat de standaardtaal is.

Zoals je je misschien kunt voorstellen, kun je heel verschillende resultaten krijgen, afhankelijk van je huidige taal of de waarde van een "cultuur" -argument. Zie hoe taalinstellingen uw FORMAT()-resultaten kunnen beïnvloeden voor meer voorbeelden.


  1. Waarom kan ik geen a doen met x als (...) met ADODB en Oracle?

  2. Hoe kan een LEFT OUTER JOIN meer records retourneren dan er in de linkertabel staan?

  3. SQL Server COALESCE() uitgelegd

  4. Als ik PreparedStatement.cancel() in een JDBC-toepassing aanroep, wordt deze dan daadwerkelijk gedood in een Oracle-database?