今天自己無聊寫了看了一個查詢需求隨手寫了一個sql語句,發現竟然不能運行,MySQL報[Err] 1305 - FUNCTION ceshi.nvl does not exist的錯。才意識到自己寫的是
orac中的sql,於是另寫一條sql達到了目的,但是事后想了一下在mys中是否有同樣功能的函數呢?經查:ifnull()。親測,另有發現:
SELECT * FROM emp e where (e.COMM is null) or e.COMM<100;
SELECT * FROM emp e WHERE IFNULL(e.COMM,0)<100;
效果是一樣的!我的COMM字段數據為300、500、1400、0;
而我要查詢的是:沒有獎金或獎金低於100的員工信息。以此來看官方的解釋:IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數字或字符串值,取決於它被使用的上下文環境。 是有問題的,0不是null
但是他也做到了返回expr2;應該是當expr1為null或者0是都返回expr2。