我想知道mysql是否有一个接收两个参数的函数,如果第一个为null,则返回null,否则返回第二个。
这将是if(something is null, null, anotherthing)
的快捷方式。
答案 0 :(得分:1)
不幸的是,没有yor行为的功能,但是如果你拥有权限就很容易创建自己的功能,另外你也可以像你已经展示的那样在查询中添加IF THEN ELSE
但是对你的问题没有答案。如果你想创建一个函数,那么你将遇到需要显式参数类型的问题,而且对于重载函数(相同的函数名称但不同的参数类型),遗憾的是它也不起作用。因此,您需要具有不同功能名称的不同类型的不同功能。它看起来像那样:
CREATE FUNCTION `fmap_varchar`(e1 VARCHAR(255), e2 VARCHAR(255) )
RETURNS VARCHAR(255) DETERMINISTIC
RETURN IF(e1 IS NULL, NULL, e2);
您可能也需要注意正确的字符集,您也可以在return子句中指定它。
您已提供查询的解决方案:
SELECT IF(something IS NULL, NULL, anotherthing) FROM your_table;