如何在PostgreSQL的PL/pgSQL中从变量创建数组?
在PL/pgSQL中从变量创建数组的正确方式
你遇到的语法错误,是因为{p, q}这种数组字面量语法仅支持填入常量值,不能直接包含变量。要从变量创建数组,有几种更合适的写法:
1. 使用ARRAY构造器(推荐,最简洁)
这是从变量创建数组最直接的方式,只需在变量列表前加上ARRAY关键字:
DO $code$ DECLARE p text := 'Hello'; q text := 'world!'; ta text[]; BEGIN ta := ARRAY[p, q]; RAISE INFO '% %', ta[1], ta[2]; END $code$;
2. 使用array_append函数
你找到的这种写法完全可行,适合需要动态逐步添加元素的场景:
DO $code$ DECLARE p text := 'Hello'; q text := 'world!'; ta text[]; BEGIN RAISE INFO 'p=[%] q=[%]', p, q; ta := array_append(array_append(ta, p), q); RAISE INFO '% %', ta[1], ta[2]; END $code$;
3. 数组连接操作符(可选)
如果需要更灵活的构造逻辑,也可以使用数组连接操作符||:
DO $code$ DECLARE p text := 'Hello'; q text := 'world!'; ta text[]; BEGIN ta := '{}'::text[] || p || q; RAISE INFO '% %', ta[1], ta[2]; END $code$;
内容的提问来源于stack exchange,提问作者twisted
相关产品推荐
相关产品推荐

