sql >> Database >  >> RDS >> Sqlserver

Decimaaltekens in SQL Server-indeling met komma's

Gelukkig(?), in SQL Server 2012+ , kunt u nu FORMAT() gebruiken om dit te bereiken:

FORMAT(@s,'#,0.0000')

In eerdere versies, met het risico er echt lelijk uit te zien

[Query] :

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))

In het eerste deel gebruiken we MONEY->VARCHAR om de komma's te produceren, maar FLOOR() wordt gebruikt om ervoor te zorgen dat de decimalen naar .00 gaan . Dit is gemakkelijk te herkennen en te vervangen door de 4 cijfers achter de komma met behulp van een combinatie van verschuivingen (*10000 ) en CAST als INT (truncatie) om de cijfers af te leiden.

[Resultaten] :

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

Maar tenzij u bedrijfsrapporten moet aanleveren met SQL Server Management Studio of SQLCMD, is dit NOOIT de juiste oplossing, zelfs als het kan. Elke front-end- of rapportageomgeving heeft de juiste functies om de opmaak van het display te verwerken.



  1. Hoe kan je met Rails meerdere statements in één query uitvoeren?

  2. Gegevens uit de tabel ophalen met PL/SQL

  3. is php sorteren beter dan mysql bestellen op?

  4. InnoDB MYSQL niet ondersteund op webserver