Postgresql函数返回有变化的表
Posted
技术标签:
【中文标题】Postgresql函数返回有变化的表【英文标题】:Postgresql function to return table with change 【发布时间】:2021-12-13 22:48:56 【问题描述】:我在函数调用中遇到错误。错误是:
列引用“出租”不明确第 2 行:CASE active DETAIL:它 可以引用 PL/PGSQL 变量或表列
查询是:
CREATE FUNCTION convert()
RETURNS TABLE (customerid int, fname varchar, lname varchar, email varchar, tripDate timestamp, rental varchar)
Language plpgsql
AS $$
BEGIN
RETURN QUERY
SELECT CASE WHEN rental = 1
THEN 'yes'
ELSE 'no'
END
FROM EML
END; $$;
【问题讨论】:
CASE,没有END
。
【参考方案1】:
改变
SELECT CASE WHEN rental = 1 THEN 'yes'
WHEN rental = 0 THEN 'no'
到
SELECT
CASE
WHEN rental = 1
THEN 'yes'
ELSE 'no'
END
编辑部分:
如果你不想只迭代二进制值,你应该像这样添加这个条件:
RETURN QUERY
SELECT
CASE
WHEN rental = 1
THEN 'yes'
ELSE 'no'
END
FROM EML WHERE rental In(0, 1)
【讨论】:
我同意,这里还需要一个 else 。但这不会假设所有其他值都必须是'no'
?如果值为“3”、“是”、“cookie”怎么办?
非二进制值需要什么?
@arcee123 见编辑部分。
@arcee123 在出租列中只有 1 和 0 我想使用此函数重新显示表格,将该列类型从 int 更改为 varchar 并返回 Yes 或 No。上面仍然是抛出语法错误。知道我正在更改输出中的数据类型,是否需要先使用 alter table 命令?
出租字段的数据类型是什么?我得到了 1/0 的东西,但是如果我们处理的是位 vs 字节 vs 最小,那么我可以看到错误的原因。以上是关于Postgresql函数返回有变化的表的主要内容,如果未能解决你的问题,请参考以下文章