postgresql - 无法确定多态类型,因为输入的类型为“unknown”

时间:2016-10-05 12:44:48

标签: sql postgresql

我正在尝试编写一个检查表达式是否为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,'','');

1 个答案:

答案 0 :(得分:1)

PostgreSQL中的字符串文字类型为unknown

您可以通过显式转换为所需类型来解决问题:

SELECT iff(false, ''::text, '');