Greenplum中concat用法问题:拼接字符串与字段出现未终止引号错误
问题解决:Greenplum函数中SQL字符串拼接的引号错误
错误原因
你当前的拼接逻辑错误地将列名counterparty_id包含在单引号内,且缺少闭合的转义单引号,导致生成的SQL出现未终止的引号字符串。原代码中''MDMP'||'#'||'counterparty_id的写法,会生成'MDMP#counterparty_id(无闭合引号),这就是报错的根源。
正确的拼接写法
需要将静态字符串'MDMP#'用转义单引号包裹,再与列名counterparty_id拼接,确保生成的SQL中是字符串和列的拼接操作,而非把列名当作字符串的一部分。修改后的脚本如下:
p_sql_text := ' select ''MDMP'' as bk_src_cd, ''MDMP#''||counterparty_id as bk_id from stg.t_zk3_'|| p_table_name;
验证生成的SQL
修改后生成的SQL会是正确格式:
select 'MDMP' as bk_src_cd, 'MDMP#'||counterparty_id as bk_id from stg.t_zk3_865445fgf5654f
这样既闭合了所有单引号,又实现了静态文本MDMP#与列counterparty_id的拼接逻辑。
内容的提问来源于stack exchange,提问作者Umid Umaraliev
相关产品推荐
相关产品推荐

