1. 程式人生 > >Mysql 沒有nvl()函式,卻有一個類似功能的函式ifnull();

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

今天自己無聊寫了看了一個查詢需求隨手寫了一個sql語句,發現竟然不能執行,MySQL報[Err] 1305 - FUNCTION ceshi.nvl does not exist的錯。才意識到自己寫的是oracle中的sql,於是另寫一條sql達到了目的,但是事後想了一下在mysql中是否有同樣功能的函式呢?經查: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。