【问题标题】:Generated columns in Postgres using a given pattern使用给定模式在 Postgres 中生成的列
【发布时间】:2020-04-24 12:31:16
【问题描述】:

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

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

其中namelastname 都是表格中的列。

如何在属性的结尾、开始和中间添加一个常量字符串?

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

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

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

模式只是Hello Name lastname

【问题讨论】:

  • 你如何“生成查询” - 你能显示代码吗?模式是否存储在数据库本身中?

标签: sql string postgresql alter-table generated-columns


【解决方案1】:

您只需进行字符串连接:

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;

【讨论】:

  • 如果你想正确处理 NULL 值,concat_ws(' ', 'Hello', name, lastname) 可能会更好
猜你喜欢
  • 2021-07-07
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多