Mysql 沒有nvl()函數,卻有一個類似功能的函數ifnull();


今天自己無聊寫了看了一個查詢需求隨手寫了一個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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM