【问题标题】:Postgresql Concat StringPostgresql 连接字符串
【发布时间】:2013-11-09 06:58:21
【问题描述】:

我想在 Postgresql 中创建选择查询。我的代码是

 select * into concat('production.',layer_name)  from concat('staging.',layer_name); 

但是有问题

ERROR:  "concat" is not a known variable
LINE 20: select * into concat('production.'layer_name)  from concat('...

我不明白为什么。

谁能帮帮我?

【问题讨论】:

  • 您不能使用表达式指定表名——它必须是一个普通的表名。此外,您正在做的事情表明数据库设计不佳。最好有一个表,并给它一个额外的字段,该字段可以包含'production''staging' - 最好有一个FK链接到一个有2行的主表,一个用于production,一个用于staging.
  • 我同意。暂存、生产等不应该有不同的表。这些要么需要是单独的数据库,一个用于每个环境,要么在一个表中有一个字段用于暂存、生产等,就像前面的评论者提到的那样。

标签: database string function postgresql concat


【解决方案1】:

Postgres 中有一个concat() 函数(从 v.9.1 开始)。对于可能涉及NULL 值的字符串连接很有用。但是你的语法对 Postgres 解析器来说只是胡言乱语。通常不可能使用值(或函数的返回值)作为普通 SQL 中的标识符。为此,您需要dynamic SQL in a plpgsql function

但是您的示例似乎也不需要。是否要将行从一张表复制到另一张表?如果是这样:

INSERT INTO production.layer_name
SELECT * FROM staging.layer_name

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多