我如何在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
答案 0 :(得分:10)
使用COALESCE
,它更简单:
DELIMITER $$
CREATE FUNCTION NVL (first DATETIME, second DATETIME)
RETURNS DATETIME
BEGIN
RETURN COALESCE(first, second);
END
$$
DELIMITER ;
答案 1 :(得分:4)
我认为COALESCE()方法就是您所需要的。
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce