2008-09-03 5 views
2

Ich möchte SQL verwenden, um eine Zahl mit Kommas in den Tausenden zu formatieren, aber keine Dezimalzahl (also kann Geld nicht verwenden) - irgendwelche Vorschläge?SQL-Nummer Formatierung

Ich bin mit SQL Server 2005, aber fühlen Sie sich frei als auch für andere zu beantworten (wie MySQL)

Antwort

4

Mit TSQL können Sie zu Geld umwandeln und konvertieren wird die .00 hinzufügen, aber Sie können ersetzen oder Teilzeichenfolge zu entfernen.

replace(convert(varchar, cast(column as money), 1), '.00', '') 

In SQL 2005 Sie eine CLR-Funktion als auch

[Microsoft.SqlServer.Server.SqlFunction] 
public static SqlString FormatNumber(SqlInt32 number) 
{ 
    return number.Value.ToString("N0"); 
} 

und nennen Sie es wie jede andere benutzerdefinierte Funktion

SELECT dbo.FormatNumber(value) 
2

In Oracle verwenden konnten, können Sie ein Format Parameter angeben an die to_char-Funktion: TO_CHAR (1234, '9.999') -> 1.234

0

Für SQL Server können Sie die Nummer als Geld formatieren und dann die drei am weitesten rechts stehenden Zeichen löschen.

replace(convert (varchar, convert (money, 109999), 1), '.00','') 
2

Irgendein bestimmter Grund, den Sie das auf der Serverseite tun möchten? Scheint so, als wäre es eine Aufgabe, die besser für den Kunden/Bericht geeignet ist.

Ansonsten sind Sie speichern eine Zahl als eine Zeichenfolge nur so können Sie die Formatierung beibehalten, wie Sie es wollen - aber Sie haben gerade die Fähigkeit verloren, selbst Grundrechenarten zu tun, ohne es auf eine Zahl zurückkonvertieren .

Wenn Sie wirklich entschlossen sind, es in SQL zu tun und einen berechtigten Grund dafür zu haben, denke ich, dass meine Stimme auf der Methode von Scott ist: Wert -> Geld -> Varchar -> Dezimalen Anteil abschneiden

- Kevin Fairchild