我正在尝试编写一个检查表达式是否为true的函数,该函数总共有三个参数。第一个参数是表达式,例如1< 5,这将是真的。
如果此语句为真,则第二个和第三个参数让函数知道要返回的内容:
CREATE OR REPLACE FUNCTION iff( expression boolean ,true_type anyelement , false_type anyelement )
RETURNS anyelement AS
$$
DECLARE
BEGIN
IF expression = TRUE THEN
RETURN true_type;
ELSEIF expression = FALSE THEN
RETURN false_type;
END IF;
END;
$$
LANGUAGE plpgsql;
该函数适用于整数值,布尔值但不适用于字符串文字。
实施例: 此语句有效并返回2.
SELECT IFF(false,1,2);
示例2: 此语句不起作用,并提供以下错误消息: 无法确定多态类型,因为输入的类型为“未知”
SELECT IFF(false,'','');
答案 0 :(得分:1)
PostgreSQL中的字符串文字类型为unknown
。
您可以通过显式转换为所需类型来解决问题:
SELECT iff(false, ''::text, '');