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

SQL Server-format decimaler med kommaer

Heldigvis(?), i SQL Server 2012+ , kan du nu bruge FORMAT() for at opnå dette:

FORMAT(@s,'#,0.0000')
 

I tidligere versioner med risiko for at se rigtig grim ud

[Forespørgsel] :

declare @s decimal(18,10);
set @s = 1234.1234567;
select replace(convert(varchar,cast(floor(@s) as money),1),'.00',
    '.'+right(cast(@s * 10000 +10000.5 as int),4))
 

I den første del bruger vi MONEY->VARCHAR til at producere kommaerne, men FLOOR() bruges til at sikre, at decimalerne går til .00 . Dette er let identificerbart og erstattes med de 4 cifre efter decimalen ved hjælp af en blanding af skift (*10000 ) og CAST som INT (trunkering) for at udlede cifrene.

[Resultater] :

| COLUMN_0 | -------------- | 1,234.1235 |

Men medmindre du skal levere forretningsrapporter ved hjælp af SQL Server Management Studio eller SQLCMD, er dette ALDRIG den rigtige løsning, selvom det kan lade sig gøre. Ethvert frontend- eller rapporteringsmiljø har de rigtige funktioner til at håndtere skærmformatering.



  1. Skal en enum i MySQL IKKE være NULL?

  2. 2 måder at indsætte en ny linje i en streng i SQLite

  3. laravel orderByRaw() på forespørgselsbyggeren

  4. MBR Indenfor ikke nøjagtig i mysql