ORA-01476: divisor is equal to zero
Bir ifade sıfıra böldü. Bölmeyi NULLIF ile koruyun; böylece sıfır bölen hata yerine NULL verir.
ORA-01476 ne demek?
Oracle, bir NUMBER ifadesinin böleni sıfır olduğunda ORA-01476 verir ve milyonlarca satırdan yalnızca biri neden olsa bile ifadenin tamamı başarısız olur. Bir raporun aylarca çalışıp veriye ilk sıfır girdiği gün düşmesinin nedeni budur.
ORA-01476 neden olur?
- Bölen olarak kullanılan bir kolonda sıfır bulunması.
a - bgibi hesaplanan bir bölenin sıfır olması.- Boş bir grup üzerinde yüzde ya da ortalama hesabı.
- Elle yazılmış
MODbenzeri bir hesap.
ORA-01476 nasıl çözülür?
NULLIF(bolen, 0)kullanın: NULL’a bölmek NULL verir.- Sabit bir sonuç gerekiyorsa sarın:
NVL(a / NULLIF(b, 0), 0). - Açık yazmayı tercih ederseniz
CASE WHEN b <> 0 THEN a / b ENDkullanın. - Satırları
WHERE b = 0ile bulun ve sıfırın geçerli bir değer olup olmadığına bakın.
ORA-01476 örneği
NULLIF sıfırı NULL’a çevirir:
-- ORA-01476: divisor is equal to zero
SELECT total / quantity FROM order_lines;
-- Çalışır
SELECT total / NULLIF(quantity, 0) FROM order_lines;
SQLlightspeed’de
Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.
İlgili hatalar
ORA-01722ORA-06502ORA-01438 Tüm Oracle hataları →
Oracle dokümantasyonu: ORA-01476. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.