mysql函数提供相当于Oracle NVL的功能

Ste*_*son 7 mysql oracle function

我有一个奇怪的情况.我必须在Oracle和MySQL中使用NVL(columna,columnb).我无法更改SQL,因为它在我无法编辑的包中,但它是我在MySQL和Oracle之间的应用程序中唯一不起作用的东西.

我如何在MySQL中编写NVL().我看过这里(http://dev.mysql.com/doc/refman/5.0/en/create-function-udf.html)看起来我必须用C编写并将其链接到MySQL.

但是http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html似乎说我可以在不编译添加的情况下完成.

我试过这个,但它不起作用.我做错了什么?

CREATE FUNCTION NVL (first DATETIME, second DATETIME)
RETURNS DATETIME
begin
DECLARE first DATETIME;
DECLARE second DATETIME;
DECLARE return_value DATETIME;
SET return_value = IFNULL(first,second);
RETURN return_value;
end
Run Code Online (Sandbox Code Playgroud)

Qua*_*noi 10

使用COALESCE,它更简单:

DELIMITER $$

CREATE FUNCTION NVL (first DATETIME, second DATETIME)
RETURNS DATETIME
BEGIN
        RETURN COALESCE(first, second);
END

$$

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)