2016-11-08 5 views
0

Bei komplizierten Gründen in Dezimalzahlen, ich brauche dieseFormatiert varchar

FORMAT(CAST(ROUND(column) AS INT), '#,0.0000') 

zu tun, die mich 1,000,000.0000 es

Aber wie kann man wieder von varchar (12,4) in Dezimalzahlen später gibt?

Danke!

+0

nicht zurückwerfen! Sie haben nur 4 Ziffern in der Varchar-Version und können Probleme mit der Darstellung/Rundung haben. Verwenden Sie den ursprünglichen Dezimalwert –

+0

@DStanley es löst einen Fehler, aber folgende funktioniert SELECT CAST (ERSETZEN ('1.000.000.0000', ',', '') AS DECIMAL (12,4)) Danke für eine Idee, aber nur wasn Sicher ist es der beste und sicherste Weg. – 1234567890

+2

Das Formatieren eines _integer_ für die Anzeige mit einer Genauigkeit bis zu einem Zehntausendstel ist interessant genug. Das Entfernen der kulturspezifischen Tausendertrennzeichen, um sie mit einer solchen Genauigkeit in einen numerischen Datentyp zu konvertieren, ist verwirrend. Tipp: Die Formatierung von Werten für die Anzeige erfolgt in der Regel am besten in der Anwendung, nicht in der Datenbank. – HABO

Antwort

0

Entfernen Sie einfach die Kommas und konvertieren. Also:

DECLARE @x varchar(255); 

SELECT @x = FORMAT(CAST(ROUND(column) AS INT), '#,0.0000'); 

SELECT CAST(REPLACE(@x, ',', ..) as DECIMAL(12, 4));