Operator Bahagian dalam PostgreSQL: Memahami Pemangkasan Integer dan Pengiraan Titik Terapung
Dalam PostgreSQL, operasi pembahagian (/) boleh membawa kepada hasil yang tidak dijangka apabila bekerja dengan nilai integer. Memahami kelakuan asas pembahagian integer adalah penting untuk mengelakkan pengiraan yang salah.
Pertimbangkan pertanyaan berikut:
SELECT dev_cost / sell_cost FROM software
Di mana dev_cost ialah 16000 dan sell_cost ialah 7500. Anda mungkin menjangkakan hasilnya akan menjadi 3, tetapi ia mengembalikan 2. Ini kerana pembahagian integer memotong sebarang pecahan sebahagian daripada hasil.
Untuk mendapatkan nilai yang diingini, anda perlu menghantar sekurang-kurangnya satu daripada nilai kepada jenis titik terapung (cth., perpuluhan) atau gunakan operator :: untuk menukarnya dengan cepat :
SELECT CAST(dev_cost AS DECIMAL) / sell_cost FROM software
SELECT dev_cost::DECIMAL / sell_cost FROM software
Pertanyaan ini akan mengembalikan 2.133, iaitu pembahagian sebenar hasil.
Selain itu, anda boleh menggunakan fungsi ceil() untuk membundarkan hasilnya kepada integer terdekat:
SELECT CEIL(dev_cost::DECIMAL / sell_cost) FROM software
Pertanyaan ini akan mengembalikan 3, iaitu kuantiti perisian yang dikehendaki untuk memulihkan kos pembangunan.
Adalah penting untuk mengetahui tingkah laku ini semasa menjalankan operasi pembahagian dan menggunakan jenis data dan penghantaran yang sesuai untuk memastikan ketepatan pengiraan.
Atas ialah kandungan terperinci Bagaimanakah PostgreSQL Mengendalikan Bahagian Integer, dan Bagaimana Saya Boleh Mendapatkan Keputusan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!