从布尔列postgresql创建varchar列

时间:2017-04-19 23:30:00

标签: sql postgresql

我需要创建一个包含布尔列颜色值的varchar列,这里是表结构:

CREATE TABLE public.prosp(
    id serial PRIMARY KEY NOT NULL,
    isblack bool,
    isyellow bool,
    isgreen bool
);

我想添加一个名为color containg的列,例如:green

如果isgreen = true,我试过这个并且有效

SELECT
"id",    
  CASE WHEN "isblack" THEN 'black; ' ELSE '' END ||
  CASE WHEN "isyellow" THEN 'yellow; ' ELSE '' END || 
  CASE WHEN "isgreen" THEN 'green; ' ELSE '' END
  AS couleurs
FROM public.prosp

现在我需要将上述表达式的结果放在color列中。

感谢。

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

concat_ws()

我应该注意,通常可以使用update public.prosp set color = concat_ws(',', (CASE WHEN isblack THEN 'black' END), (CASE WHEN isyellow THEN 'yellow' END), (CASE WHEN isgreen THEN 'green' END) );

来完成
{{1}}

这会在值之间加上逗号,而不是在结尾处使用分号。