【发布时间】:2017-02-28 09:30:48
【问题描述】:
netezza 中的 STUFF 等价物是什么,我正在尝试对列连接进行行。我尝试了另一个问题中提到的 GROUP_CONCAT()/ String_AGG,但我无法同时使用它们。
【问题讨论】:
标签: netezza
netezza 中的 STUFF 等价物是什么,我正在尝试对列连接进行行。我尝试了另一个问题中提到的 GROUP_CONCAT()/ String_AGG,但我无法同时使用它们。
【问题讨论】:
标签: netezza
我以前从未使用过 STUFF,但查看描述,没有与其等效的本机 Netezza 功能。但是,似乎使用 SUBSTR 重新创建是一件简单的事情。由于我并没有真正使用 STUFF,因此请加一点盐,但请尝试一下。
如果我们以使用 STUFF 为例:
SELECT STUFF('abcdef', 2, 3, 'ijklmn');
---------
aijklmnef
(1 row(s) affected)
如果我出于演示目的将值和 STUFF 参数虚拟化到子选择中,以下是使用 SUBSTR 的方法。
SELECT
substr(orig_string ,0,start_pos)
|| replace_string ||
substr(orig_string,start_pos+del_length, LENGTH(orig_string)) new_string,
orig_string , replace_string
FROM
( SELECT
'abcdef' orig_string ,
2 start_pos ,
3 del_length ,
'ijklmn' replace_string ) foo
;
NEW_STRING | ORIG_STRING | REPLACE_STRING
------------+-------------+----------------
aijklmnef | abcdef | ijklmn
(1 row)
【讨论】:
您可以使用 GROUP_CONCAT 来获得与使用 STUFF 类似的结果。 GROUP_CONCAT 函数必须从 Netezza Linux 环境的 nzlua 示例目录安装。
export NZ_PASSWORD='YOURADMINPASSWORD'
cd /nz/extensions/nz/nzlua/examples
../bin/nzl group_concat.nzl
此 group_concat 在 Netezza SYSTEM 数据库中可用之后。作为管理员,您可以执行这些命令以使数据库中的所有用户都可以轻松使用它们。
grant execute on system..group_concat(varchar(128)) to public; -- once
create synonym group_concat for system..group_concat; -- in every user database
【讨论】: