T-SQL: Entfernen von Dezimalstellen aus dem Gelddatentyp

Bei der Arbeit mit Finanzdaten in SQL Server, insbesondere unter Verwendung der T-SQL-Sprache, kann es notwendig sein, Zahlen so zu manipulieren, dass sie von ihren Dezimalstellen befreit werden. Für diejenigen, die den Gelddatentyp in SQL Server 2005 verwenden, stellt sich möglicherweise die Frage, ob es einen besseren Ansatz gibt als die Nummer in einen String zu konvertieren und dann die Dezimalstelle durch String-Manipulation zu entfernen. Lassen Sie uns eine effiziente Methode erkunden, um dies zu erreichen.

Der übliche Ansatz

Viele SQL-Entwickler entfernen die Dezimalstellen von Geldtypen, indem sie die Zahl zuerst in ein Varchar konvertieren und die Funktion REPLACE verwenden. Zum Beispiel:

SELECT REPLACE(1.23, '.', ''), REPLACE(19.99, '.', '')

Dieser Code ersetzt die Dezimalstelle und liefert die gewünschten Ganzzahlen 123 und 1999. Allerdings kann diese Methode klobig erscheinen und in Bezug auf Performance oder Lesbarkeit nicht ideal sein.

Eine effizientere Lösung

Eine elegantere Lösung ermöglicht es Ihnen, dasselbe Ergebnis ohne unnötige Konvertierungen zu erzielen. Anstatt in einen String zu konvertieren, können Sie den Geldwert mit 100 multiplizieren und ihn dann in ein INT umwandeln. Diese Methode ist unkompliziert und nutzt die T-SQL-Funktionen effektiv. So können Sie es tun:

Schritt-für-Schritt-Implementierung

  1. Multiplizieren Sie den Geldwert mit 100: Dadurch wird die Dezimalstelle um zwei Stellen nach rechts verschoben. Zum Beispiel wird 1.23 zu 123 und 19.99 zu 1999.
  2. In INT umwandeln: Die Umwandlung in INT entfernt alle Dezimalstellen und hinterlässt eine saubere, ganze Zahl.

Beispielimplementierung

Hier ist ein praktisches Beispiel, um die Lösung in Aktion zu veranschaulichen:

SELECT CAST(1.23 * 100 AS INT) AS Amount1,
       CAST(19.99 * 100 AS INT) AS Amount2

Dieser Code gibt zurück:

  • Amount1: 123
  • Amount2: 1999

Warum diese Methode vorzuziehen ist

  • Performance: Multiplizieren und Casting sind im Allgemeinen schneller als String-Manipulation, insbesondere bei größeren Datensätzen.
  • Einfachheit: Der Code ist leichter zu lesen und zu warten, was ihn für jeden, der die SQL-Skripte überprüft oder verwendet, nachvollziehbar macht.
  • Datenintegrität: Indem Sie innerhalb der Zahlentypen bleiben und die Konvertierung in Strings vermeiden, minimieren Sie das Risiko, Fehler oder unerwartetes Verhalten aufgrund falscher Formatierung einzuführen.

Fazit

Mit T-SQL in SQL Server 2005 können Sie Dezimalstellen aus Gelddatentypen effizient entfernen, indem Sie den Wert mit 100 multiplizieren und ihn in eine Ganzzahl umwandeln. Dieser Ansatz ist einfacher, schneller und gewährleistet die Datenintegrität. Das nächste Mal, wenn Sie Geldwerte in Ihren Abfragen manipulieren müssen, ziehen Sie diese Methode für eine sauberere, effektivere Lösung in Betracht.