【问题标题】:STUFF function equivalent in netezzanetezza 中等效的 STUFF 函数
【发布时间】:2017-02-28 09:30:48
【问题描述】:

netezza 中的 STUFF 等价物是什么,我正在尝试对列连接进行行。我尝试了另一个问题中提到的 GROUP_CONCAT()/ String_AGG,但我无法同时使用它们。

【问题讨论】:

    标签: netezza


    【解决方案1】:

    我以前从未使用过 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)
    

    【讨论】:

      【解决方案2】:

      您可以使用 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
      

      【讨论】:

        猜你喜欢
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        相关资源
        最近更新 更多