繁体   English   中英

在PostgreSQL中转换查询结果值

[英]Transform query results values in PostgreSQL

我有一组数字标识符(例如100101102等),其映射到一个用户可以采取动作。 我希望能够将这些值转换为人类可读的字符串,这样我就可以运行报告,而不必在其中包含图例键。

我初步尝试创建一个函数

CREATE FUNCTION action_to_str (integer) RETURNS text as $$ BEGIN IF $1 = 100 THEN RETURN "skip"; ELSIF $1 = 101 THEN RETURN "save"; ELSIF $1 = 102 THEN RETURN "buy"; ELSIF $1 = 103 THEN RETURN "map"; ELSIF $1 = 104 THEN RETURN "dismiss"; ELSIF $1 = 105 THEN RETURN "share"; ELSIF $1 = 106 THEN RETURN "dislike"; ELSE RETURN "unknown"; END IF; END; $$ LANGUAGE plpgsql;

但是然后我得到这样的错误:

ERROR: column "dismiss" does not exist LINE 1: SELECT "dismiss" ^ QUERY: SELECT "dismiss" CONTEXT: PL/pgSQL function action_to_str(integer) line 12 at RETURN

我了解发生了什么(它认为函数的结果是一列而不是一个值),但是我不确定如何解决此问题。

主要问题是您要对返回的值加双引号( " )。请改用单引号( ' )。双引号用于标识符(不建议)。单引号用于值。

最佳实践是创建表action

create table action (
    action_id int,
    action_description text
);

并将其加入查询

select coalesce(a.action_description, 'unknown')
from
    some_table st
    left join
    action a using(action_id);

习惯的口头禅是:认为关系不是程序性的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM