如何将此代码从 netezza 迁移到 db2?
Posted
技术标签:
【中文标题】如何将此代码从 netezza 迁移到 db2?【英文标题】:How i can migrate this code from netezza to db2? 【发布时间】:2019-10-11 08:25:53 【问题描述】:SET v_ArrayLength= ARRAY_COUNT(ARRAY_SPLIT(p_SeasonsStr, ','));
FOR v_ArrayPos in 1 .. v_ArrayLength LOOP
IF (v_ArrayPos<>v_ArrayLength) THEN
SET v_SeasonsStrs= v_SeasonsStrs||GET_VALUE_VARCHAR(ARRAY_SPLIT(p_SeasonsStr, ','),v_ArrayPos )||'_'||v_ArrayPos||',';
ELSE
SET v_SeasonsStrs= v_SeasonsStrs||GET_VALUE_VARCHAR(ARRAY_SPLIT(p_SeasonsStr, ','),v_ArrayPos )||'_'||v_ArrayPos;
END IF;
END LOOP;
如何将此代码从 NETEZZA 迁移到 DB2?
【问题讨论】:
太棒了!格式化的文字比图片好很多! 在不知道目标 Db2 服务器操作系统(Z/OS、i 系列、Linux/Unix/Windows)和 Db2 版本的情况下无法回答问题。 【参考方案1】:如果您在p_SeasonsStr
中提供了一些数据样本并且在v_SeasonsStr
中提供了预期的结果,这对那些不熟悉 Netezza 功能的人来说尤其有用。
上面的代码大概可以修改为Db2 for LUW
中的一个select语句:
select listagg(tok||'_'||seq, ',') within group (order by seq)
into v_SeasonsStrs
from xmltable('for $id in tokenize($s, ",") return <i>string($id)</i>'
passing
-- 'str1,str2,str3'
p_SeasonsStr
as "s"
columns
seq for ordinality
, tok varchar(50) path '.'
) t;
如果你注释掉带有变量和参数的行并取消注释被注释掉的行,然后运行你得到的语句,结果是:str1_1,str2_2,str3_3
【讨论】:
以上是关于如何将此代码从 netezza 迁移到 db2?的主要内容,如果未能解决你的问题,请参考以下文章
从 DB2 迁移到 PostgreSQL-BLOB()/CLOB()