Heim > Datenbank > MySQL-Tutorial > Warum gibt die PostgreSQL-Ganzzahldivision falsche Ergebnisse zurück?

Warum gibt die PostgreSQL-Ganzzahldivision falsche Ergebnisse zurück?

Linda Hamilton
Freigeben: 2024-12-27 22:58:12
Original
381 Leute haben es durchsucht

Why Does PostgreSQL Integer Division Return Incorrect Results?

Divisionsproblem in PostgreSQL: Warum Division (/) falsche Ergebnisse zurückgibt

Beim Versuch, Divisionen mit ganzzahligen Spalten in PostgreSQL zu berechnen, kann es vorkommen, dass Benutzer auf unerwartete Ergebnisse stoßen. Stellen Sie sich das folgende Szenario vor:

Problem:

Eine Tabelle mit dem Namen „software“ enthält die Spalten „dev_cost“ und „sell_cost“. Sie möchten die Menge an Software ermitteln, die verkauft werden muss, um die dev_cost zu decken. Vorausgesetzt, dass „dev_cost“ 16.000 und „sell_cost“ 7.500 beträgt, erwarten Sie ein Ergebnis von 3. Die Abfrage

select dev_cost / sell_cost from software;
Nach dem Login kopieren

gibt jedoch stattdessen 2 zurück.

Ursache:

PostgresSQL führt eine Ganzzahldivision durch, die das Ergebnis in Richtung kürzt null. Da sowohl „dev_cost“ als auch „sell_cost“ als Ganzzahlen definiert sind, wird das Ergebnis auf 2 gekürzt.

Lösung:

Um das richtige Ergebnis zu erhalten, mindestens eine Der Operand muss in einen Gleitkommatyp umgewandelt werden, z. B. Float oder Decimal. Dies kann mit der Funktion cast() oder dem Operator mit Doppelpunkt :: erreicht werden:

select cast(dev_cost as decimal) / sell_cost from software;
Nach dem Login kopieren

oder

select dev_cost::decimal / sell_cost from software;
Nach dem Login kopieren

Alternativ können Sie das Ergebnis mit auf die nächste ganze Zahl aufrunden die Funktion ceil():

select ceil(dev_cost::decimal / sell_cost) from software;
Nach dem Login kopieren

Demo:

[SQLFiddle Demo](https://www.sqlfiddle.com/#!17/23da8/1)

Das obige ist der detaillierte Inhalt vonWarum gibt die PostgreSQL-Ganzzahldivision falsche Ergebnisse zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage