Zurück zur Artikelliste Artikel
5 Leseminuten

Wie der Divisions-Operator in SQL funktioniert

Der Divisions-Operator in SQL wird verwendet, um einen Ausdruck oder eine Zahl durch eine andere zu dividieren. Dieser Artikel zeigt Ihnen genau, wie Sie ihn verwenden und welche Fehler Sie dabei vermeiden können.

Der Divisions-Operator in SQL wird als arithmetischer Operator betrachtet. Die arithmetischen Operatoren sind Addition (+), Subtraktion (-), Multiplikation (*), Division (/) und Modulus (%). Dieser Artikel befasst sich mit dem Divisions-Operator und erläutert die Regeln, die befolgt werden müssen, sowie einige häufige Fehler, auf die man achten sollte, wenn man versucht, in SQL zu dividieren.

Die Syntax für den Divisions-Operator in SQL lautet wie folgt:

SELECT <Ausdruck> / <Ausdruck>
FROM table
[WHERE Ausdruck]

Beachten Sie, dass die Einbeziehung der WHERE Klausel völlig optional ist. Der Divisions-Operator kann überall verwendet werden, wo es einen Ausdruck gibt. Das heißt, Sie können den SQL-Divisions-Operator mit:

  • SELECT.
  • WHERE.
  • HAVING.
  • ORDER BY.
  • Oder als Teil einer Funktion.
benutzen.

Wenn diese Ausdrücke Sie verwirren, sollten Sie sich diesen SQL-Praxis Kurs von LearnSQL.com ansehen. Es ist eine effiziente und unterhaltsame Methode, um Ihre SQL-Kenntnisse zu vertiefen.

Das einfachste Beispiel für den Divisions-Operator ist:

SELECT 10 / 2

Sie können diese Abfrage ausführen und das Ergebnis ausgeben - in diesem Fall 5. Es ist jedoch wahrscheinlicher, dass Sie mit Zahlen arbeiten, die sich in Spalten als Teil Ihrer Datenbanktabellen befinden.

Lassen Sie uns ein solches Beispiel betrachten. Wir verwenden eine Tabelle mit dem Namen Bestand, die typische Lebensmittel zusammen mit ihrem Preis und ihrer Menge enthält.

Bestand

ArtikelPreisMenge
Eier1512
Milch34
Mehl52
Brot103

Wenden wir den Divisions-Operator auf eine ganze Spalte unserer Tabelle an und beobachten wir die Auswirkung. Betrachten Sie die folgende SQL-Abfrage:

SELECT Menge, Menge / 2 AS 'Resultat'
FROM Bestand

Mit dieser Abfrage wählen wir die Spalte Menge aus und zeigen dann das Ergebnis der Division des Wertes Menge in unserer Spalte Resultat an, die das Ergebnis von Menge / 2 enthält. Führen wir diese Abfrage aus und schauen uns das Ergebnis an:

MengeResultat
126
42
21
31

Die Ergebnisse sehen so aus, wie wir sie erwarten würden, mit Ausnahme der letzten Zeile. Ist nicht 3 / 2 = 1,5?! Das von SQL Server angezeigte Ergebnis zeigt den Wert 1. Je nach der von Ihnen verwendeten SQL-Variante kann der Divisions-Operator die Ganzzahldivision anders behandeln. Dies soll im nächsten Abschnitt geklärt werden!

Wie werden Ganzzahlen in SQL dividiert?

Ganzzahlige Divisionen können sich je nach dem von Ihnen verwendeten SQL-Datenbankmanagementsystem unterschiedlich verhalten. MySQL- und Oracle-Benutzer können erwarten, dass die reelle Zahl mit dem Datentyp float angezeigt wird, z. B. 3 / 2 = 1,5.

Für SQL Server- und PostgreSQL-Benutzer ist die Integer-Division jedoch komplexer. Sie müssen an bestimmte Regeln denken, wenn Sie Zahlen dividieren, die nicht durch eine ganze Zahl teilbar sind. Lassen Sie uns das vorherige Beispiel noch einmal aufgreifen:

SELECT 3 / 2;

Bei der Ausführung in SQL Server oder PostgreSQL ist das Ergebnis dieser Abfrage 1, während die meisten Benutzer 1,5 erwarten würden. Was ist hier los? Der Divisions-Operator verarbeitet bei der Division zweier ganzer Zahlen nur den ganzzahligen Teil des Ergebnisses. Das erhaltene Ergebnis wird als Quotient bezeichnet. Der Rest wird nicht behandelt. Bei der Division zweier ganzer Zahlen gibt das Ergebnis an, wie oft die eine Zahl in die andere eingeht, und zwar ganz.

Betrachten Sie diese Beispiele in SQL Server oder PostgreSQL:

Divisions-AbfrageResultat
SELECT 10 / 33
SELECT 5 / 22
SELECT 11 / 61

Ändern Sie die Operanden in eine Dezimal- oder Fließkommazahl

Dies ist nur möglich, wenn die jeweilige Divisions-Operator dies zulässt. Wenn zwei Spaltennamen beteiligt sind, ist diese Methode nicht möglich. Verwenden Sie stattdessen die unten beschriebene Methode CAST/CONVERT. Sie müssen in der Lage sein, direkt auf eine der Zahlen zuzugreifen. Die Verwendung dieser Methode ist einfach. Wir ändern einfach einen oder beide der Operanden:

Divisions-AbfrageResultat
SELECT 10.0 / 33.333333
SELECT 5 / 2.02.5
SELECT 11.0 / 6.01.833333

Wir können diese Methode auch auf unser vorheriges Bestand Beispiel anwenden. Wir müssen unsere Abfrage auf die folgende Weise aktualisieren:

SELECT Menge, Menge / 2.0 AS 'Resultat'
FROM Bestand

Die Ausführung dieser Abfrage ergibt eine ähnliche Ergebnismenge wie zuvor, mit einem entscheidenden Unterschied.

MengeResultat
126.00000
42.00000
21.00000
31.50000

Dies ist ideal, wenn wir direkt auf einen der Operanden zugreifen und ihn ändern können. Dies ist jedoch nicht immer der Fall.

CAST oder CONVERT auf Spalten anwenden

Stellen Sie sich vor, wir dividieren den Wert der Spalte Preis durch die Spalte Menge für einen bestimmten Artikel. Unsere Abfrage würde wie folgt aussehen:

SELECT Preis / Menge
FROM Bestand
WHERE Artikel = 'Mehl'

Die Ausführung dieser Abfrage zeigt ein Ergebnis von 2. Das ist ein klassisches Szenario für eine Integer-Division. Umgehen wir dies, indem wir CAST auf eine unserer Spalten anwenden.

Wir müssen unsere Abfrage auf die folgende Weise aktualisieren:

SELECT CAST(Preis AS DECIMAL(7,2)) / Menge AS 'CAST(Preis)/Menge'
FROM Bestand
WHERE Artikel = 'Mehl'

Beachten Sie, dass Sie auch CONVERT anstelle von CAST verwenden können. Mehr über die Konvertierung einer ganzen Zahl mit CAST und CONVERT erfahren Sie hier. Wenn Sie diese Abfrage ausführen, erhalten Sie ein neues Ergebnis:

CAST(Preis)/Menge
2.50000

Da haben wir es! Die CAST-Operation wurde erfolgreich auf die Preisspalte angewendet, so dass sie für diese arithmetische Operation einen dezimalen Datentyp darstellt. Beachten Sie, dass, wenn der arithmetische Ausdruck mehr als einen Operator enthält, die Multiplikations- und Divisions-Operatoren zuerst ausgewertet werden, gefolgt von den Additions- und Subtraktionsoperatoren. Wenn zwei Operatoren die gleiche Priorität haben, wird der Ausdruck von links nach rechts ausgewertet.

Sie sollten sich auch über den SQL-Fehler "Division durch Null" im Klaren sein, unabhängig davon, welches DBMS Sie verwenden. Die Division durch Null führt zu Unendlichkeit, was in SQL nicht zulässig ist. Wenn Sie dies tun, wird eine Fehlermeldung angezeigt. Diese nützliche SQL-Kochbuchseite zeigt Ihnen, wie Sie den Fehler "Division durch Null" in SQL behandeln können. Schauen Sie es sich an, wenn Sie interessiert sind!

Teilen und Herrschen mit dem SQL-Divisions-Operator!

In diesem Artikel sind wir ins kalte Wasser gesprungen und haben Ihnen die Feinheiten der Verwendung des Divisions-Operator in SQL für die Ganzzahldivision gezeigt. Wir haben gelernt, wie die Ganzzahldivision für jedes SQL DBMS von SQL Server bis MySQL gehandhabt wird. Wir haben uns auch mit dem lästigen SQL-Fehler "Division durch Null" befasst und Ressourcen vorgestellt, mit denen Sie diesen speziellen Fehler elegant umgehen können.

Wie bei allem im Leben gilt: Übung macht den Meister! Wenn Sie Ihre SQL-Kenntnisse durch unterhaltsame und ansprechende monatliche Herausforderungen verbessern möchten, sollten Sie die SQL-Herausforderung dieses Monats in Betracht ziehen.