You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 12 含嵌套UDT数组的INSERT语句编写求助

解决PostgreSQL复合类型数组的INSERT问题

针对你定义的嵌套复合类型和数组结构,以下是两种正确的INSERT写法:

方法1:使用ROW和ARRAY构造器(推荐,可读性高)

这种方式无需手动处理复杂的引号转义,PostgreSQL会自动完成类型转换:

INSERT INTO my_table (val_t)
VALUES (
  ARRAY[
    ROW(
      'text',
      ARRAY[ROW('text1'), ROW('text2')]::my_type1[]
    )::my_type2
  ]
);

方法2:使用字符串字面量(需严格遵循格式)

如果必须用字符串形式插入,要严格按照PostgreSQL复合类型数组的语法规则处理嵌套引号:

INSERT INTO my_table (val_t)
VALUES ('{"(text,\"{\"\"text1\"\",\"\"text2\"\"}\")"}');

格式规则说明

  • 复合类型元素必须用()包裹,比如(text, ...)对应my_type2的结构
  • 数组元素用{}包裹,嵌套数组需逐层转义引号:字符串内的双引号用\"转义,字符串内的单引号用两个单引号''转义

验证插入结果

执行以下查询可确认数据是否正确插入:

-- 查看完整数据
SELECT * FROM my_table;

-- 提取嵌套字段查看
SELECT val_t[1].val_s AS outer_text, val_t[1].val_t AS inner_array FROM my_table;

内容的提问来源于stack exchange,提问作者Ilya Mushchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:42:02