sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server-format decimaler med kommatecken

Tack och lov(?), i SQL Server 2012+ , kan du nu använda FORMAT() för att uppnå detta:

FORMAT(@s,'#,0.0000')

I tidigare versioner, med risk att se riktigt ful ut

[Fråga] :

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örsta delen använder vi MONEY->VARCHAR för att producera kommatecken, men FLOOR() används för att säkerställa att decimalerna går till .00 . Detta är lätt identifierbart och ersätts med de fyra siffrorna efter decimalen med en blandning av skiftning (*10000 ) och CAST som INT (trunkering) för att härleda siffrorna.

[Resultat] :

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

Men om du inte måste leverera affärsrapporter med SQL Server Management Studio eller SQLCMD är detta ALDRIG den korrekta lösningen, även om det kan göras. Alla gränssnitt eller rapporteringsmiljöer har lämpliga funktioner för att hantera bildskärmsformatering.



  1. Unik nyckel kontra unikt index på SQL Server 2008

  2. Infoga heltalsvärde i mysql int med INSERT

  3. Laravel Eloquent med två "WHERE NOT IN" i underfrågan

  4. hur man emulerar insert ignore och på duplicate key update (sql merge) med postgresql?