【问题标题】:GreenPlum -- 'concat ' function in greenplumGreenPlum——greenplum 中的“concat”函数
【发布时间】:2023-04-01 09:25:02
【问题描述】:

GreenPlum 中有 'concat' 函数吗?我可以在 postgresql 中使用 concat 函数,它运行良好,但是当我在 Greenplum 中使用它时,出现错误。

select concat('a', 'b');
ERROR:  function concat(unknown, unknown) does not exist at character 8
HINT:  No function matches the given name and argument types. You may need to add explicit type casts.
LINE 1: select concat('a', 'b');
               ^

GreenPlum 中是否有其他函数可以代替“concat”函数?我试图创建一个函数来代替它,但也遇到了一些语法错误。

CREATE OR REPLACE FUNCTION my_concat(VARIADIC arr VARCHAR[] ) RETURNS VARCHAR AS  $$  SELECT array_to_string(arr, '');  $$  LANGUAGE SQL;
ERROR:  syntax error at or near "VARCHAR" at character 51
LINE 1: CREATE OR REPLACE FUNCTION my_concat(VARIADIC arr VARCHAR[] ...
                                                          ^

有人可以帮忙吗?非常感谢!

【问题讨论】:

    标签: concat greenplum


    【解决方案1】:

    像大多数数据库一样,Greenplum 使用“||”将两个字符串连接在一起。

    SELECT 'Green' || 'plum';
    

    结果:

    Greenplum
    

    【讨论】:

    • 感谢您的回复。情况是我的项目使用了 postgresql-9.2 ,现在我想切换到 GreenPlum 。而且我不想修改包含“concat”语法的 SQL,所以我想找到一种方法来解决它。我试图创建一个函数来代替它,但失败了。你能帮忙吗 ?对不起我糟糕的英语!谢谢
    【解决方案2】:

    这是一个版本问题,你有使用 ||在你使用联系功能的地方。

    【讨论】:

      【解决方案3】:

      Greenplum 还没有 concat 函数。也许您可以修改您的代码以使用“||”而不是连接。

      【讨论】:

        【解决方案4】:

        嗯,

        首先我同意您应该替换您的代码以使用正确的 SQL 语法 '||'用于连接。

        如果你真的想创建一个函数来模拟 concat,你可以这样做:

        create or replace function myschema.concat(arg1 text, arg2 text)
        returns text as
        $body$
        declare
            v_arg1  text;
            v_arg2  text;
        begin
            v_arg1  := arg1;
            v_arg2  := arg2;
        
            return v_arg1 || v_arg2;
        end
        $body$
        language plpgsql volatile;
        

        然后,查询将起作用:

        select myschema.concat('test1', 'test2');
        >>test1test2
        

        【讨论】:

          【解决方案5】:

          希望您正在寻找以下查询。

          gpadmin=# CREATE OR REPLACE FUNCTION my_concat( character varying[] ) RETURNS VARCHAR AS  $$  SELECT array_to_string($1, '');  $$  LANGUAGE SQL;
          

          gpadmin=# select my_concat(ARRAY['Green','plum']); my_concat

          青梅

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-11-11
            • 1970-01-01
            • 2021-11-15
            • 1970-01-01
            • 2021-12-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多