Miért eredményez az alábbi query divide by zero hibát?
SELECT 144/(12/12/12);
Update: már jött két megoldás, de hétfő estig nem engedem megjelenni a kommenteket, hogy más is gondolkodhasson.
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.
LEAVE A COMMENT
4 COMMENTS
Mivel a zárójeles részben egész számok szerepelnek, ezért az osztás eredménye is egész lesz, a tizedes érték nélkül, azaz 0.
A select 144/(12.0/12/12) már jó eredményt ad.
144/(12/12/12) -> 144/(1/12) -> 144/0 -> divide by zero
alapbol int-kent kezeli ezeket. cast to decimal ha tenyleges tortet szeretnel
“If an integer dividend is divided by an integer divisor, the result is an integer that has any fractional part of the result truncated.”
Innen:
http://msdn.microsoft.com/en-us/library/ms175009.aspx
Tehát a select 1/3-mal, az is nulla, így pl
select 144/(1/3) is DbZ. Viszont pl. ez jó:
SELECT 144.0/(1.0/3.0);
Bár itt jelzem, hogy ez sem egyenlő ezzel:
SELECT 144/(1.0/3.0);
:-)
Köszi mindenkinek a választ, az egészekkel végzett osztások 0-at adnak a zárójelen belül, ezért lesz nullával osztás a kimenet.
Gratulálok a sikeres válaszolóknak. :)