本文介绍了复合类型数组的正确语法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

CREATE TYPE pencil_count AS(
    pencil_color varchar(30),
    count integer
);

CREATE TABLE pencils(id serial, pencils_ pencil_count[]);

INSERT INTO pencils(pencils_) VALUES('{("blue",5),("red",2)}');

这不起作用并给出错误:

This doesn't work and gives error:

如果我想添加此组合,正确的语法是什么数组而不使用 ARRAY [...]

What would be the correct syntax if I want to add this composite array without using ARRAY[...]?

推荐答案

您可以使用:

INSERT INTO pencils(pencils_) 
VALUES('{"(\"blue\",5)","(\"red\",2)"}');

请记住,您在SQL命令中编写的内容将首先解释为字符串文字,然后解释为复合文字。

字符串字面量处理器会删除一个级别的反斜杠。

The string-literal processor removes one level of backslashes.

在SQL命令中编写复合值时,ROW构造函数语法通常比复合文字语法更易于使用。在ROW中,单个字段值的写入方式与非复合字段成员时的写入方式相同。

The ROW constructor syntax is usually easier to work with than the composite-literal syntax when writing composite values in SQL commands. In ROW, individual field values are written the same way they would be written when not members of a composite.

这篇关于复合类型数组的正确语法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 19:59