PostgreSQL中的Concat函数

时间:2019-05-22 18:03:05

标签: sql postgresql hive coalesce

我在蜂巢中有以下选择语句。它执行得很好。

在Hive中

select
COALESCE(product_name,CONCAT(CONCAT(CONCAT(TRIM(product_id),' - 
'),trim(plan_code)),' - UNKNOWN')) as product_name
from table name;

我试图在POSTGRESQL中使用相同的select语句,这使我出错,提示“

查询执行失败

原因:

  

SQL错误[42883]:错误:函数concat(文本,未知)不存在
  提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

在PostgreSQL中:

select
COALESCE(product_name,CONCAT(CONCAT(CONCAT(TRIM(product_id),' - 
'),trim(plan_code)),' - UNKNOWN')) as product_name
from table name;

有人可以对此加以说明吗?

2 个答案:

答案 0 :(得分:1)

尝试使用||代替concat:

SELECT COALESCE(product_name, 
        (TRIM(product_id) || ' - ' || TRIM(plan_code) || ' - UNKNOWN')
       ) AS product_name 
FROM tablename;

或仅将一个CONCAT设置为:

SELECT COALESCE(product_name, 
         CONCAT(TRIM(product_id)::text, ' - ', TRIM(plan_code)::text, ' - UNKNOWN') 
       ) AS product_name
FROM tablename;

答案 1 :(得分:0)

您还可以考虑使用format函数:

SELECT coalesce(product_name, format('%s - %s - UNKNOWN', trim(product_id), trim(plan_code)))