使用给定模式在 Postgres 中生成列

Generated columns in Postgres using a given pattern

我需要生成一个 SQL 查询,它可以生成一个遵循特定模式的列

模式是这样存储的Hello [Name] [lastname]

其中 namelastname 都是 table 上的列。

如何在 end、start 和 indbetween 属性中添加常量字符串?

以及如何区分 table 列和我添加的列应该包含的字符串?

我的查询目前看起来像这样 - 模式然后采用

ALTER TABLE IF public.nameRegistration
DROP COLUMN IF EXISTS generated_colum 
ADD COLUMN generated_colum TEXT generated ALWAYS as (|Pattern|) stored; 

模式就是 Hello Name lastname

您只需进行字符串连接:

ALTER TABLE ADD COLUMN 
    generated_colum TEXT generated ALWAYS 
    as ('Hello ' || name || ' ' || lastname) stored; 

正如 a_horse_with_no_name 评论的那样,如果两列中的任何一列可能是 null,您可以使用 concat_ws():

ALTER TABLE ADD COLUMN 
    generated_colum TEXT generated ALWAYS 
    as (concat_ws(' ', 'Hello', name, lastname)) stored;