Rumah > pangkalan data > tutorial mysql > Mengapa Bahagian Integer PostgreSQL Menghasilkan Keputusan Yang Tidak Dijangka, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Bahagian Integer PostgreSQL Menghasilkan Keputusan Yang Tidak Dijangka, dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-19 15:39:10
asal
159 orang telah melayarinya

Why Does PostgreSQL Integer Division Produce Unexpected Results, and How Can I Fix It?

Ketidaktepatan Operasi Bahagian dalam PostgreSQL

Apabila melaksanakan operasi bahagian (/) dalam PostgreSQL, adalah penting untuk ambil perhatian bahawa hasilnya mungkin tidak seperti yang dijangkakan, terutamanya apabila berurusan dengan jenis data integer. Dalam kes ini, pembahagian memotong hasil ke arah sifar, yang boleh membawa kepada jawapan yang salah.

Untuk menggambarkan isu ini, pertimbangkan jadual bernama "perisian" dengan dua lajur integer: "dev_cost" dan "sell_cost". Jika "dev_cost" ialah 16000 dan "sell_cost" ialah 7500, membahagikan "dev_cost" dengan "sell_cost" menggunakan pertanyaan berikut:

select dev_cost / sell_cost from software ;
Salin selepas log masuk

akan mengembalikan hasil 2. Walau bagaimanapun, jawapan yang betul ialah 3, menunjukkan bahawa 3 unit perisian perlu dijual untuk mendapatkan semula kos pembangunan.

Untuk menyelesaikan masalah ini isu, adalah perlu untuk memastikan bahawa sekurang-kurangnya satu daripada nilai dalam operasi bahagi dibuang ke jenis data apungan atau perpuluhan. Ini membolehkan pengiraan titik terapung yang tepat, mengekalkan bahagian pecahan hasil. Satu cara untuk mencapai ini ialah dengan menghantar lajur "dev_cost" kepada jenis perpuluhan dalam pertanyaan:

select cast(dev_cost as decimal) / sell_cost from software ;
Salin selepas log masuk

Sebagai alternatif, anda boleh memudahkan operasi casting menggunakan operator cast jenis PostgreSQL:

select dev_cost::decimal / sell_cost from software ;
Salin selepas log masuk

Akhir sekali, untuk mendapatkan hasil integer yang dibundarkan kepada nombor bulat terdekat, anda boleh menggunakan fungsi ceil() dalam pertanyaan:

select ceil(dev_cost::decimal / sell_cost) from software ;
Salin selepas log masuk

Dengan mengikuti garis panduan ini, anda boleh mengatasi potensi ketidaktepatan yang timbul daripada pembahagian integer dalam PostgreSQL dan memastikan operasi matematik yang tepat pada data berangka anda.

Atas ialah kandungan terperinci Mengapa Bahagian Integer PostgreSQL Menghasilkan Keputusan Yang Tidak Dijangka, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan