dez*_*zso 9 arrays postgresql composite
我有一个复合类型
CREATE TYPE example AS (id integer, some_stuff integer[]);
Run Code Online (Sandbox Code Playgroud)
以为我可以使用这种类型的数组作为函数的参数.唯一的问题是我找不到为此构建数组文字的方法...如果我尝试从PostgreSQL获取它:
WITH elements AS (
SELECT (12, '{1,2}')::example AS e UNION
SELECT (3, '{3,1}')::example
)
SELECT array_agg(e) FROM elements;
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
{"(3,\"{3,1}\")","(12,\"{1,2}\")"}
Run Code Online (Sandbox Code Playgroud)
但看:
SELECT E'{"(3,\"{3,1}\")","(12,\"{1,2}\")"}'::example[];
ERROR: malformed array literal: "{"(3,"{3,1}")","(12,"{1,2}")"}"
LINE 1: select E'{"(3,\"{3,1}\")","(12,\"{1,2}\")"}'::example[]
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
Grz*_*ski 11
Select array[row(3, array[3,1]), row(12, array[1,2])]::example[];
array
------------------------------------
{"(3,\"{3,1}\")","(12,\"{1,2}\")"}
(1 row)
Run Code Online (Sandbox Code Playgroud)
如果您需要不使用构造函数的解决方案,请使用以下示例:
Select E'{"(3,\\"{3,1}\\")","(12,\\"{1,2}\\")"}'::example[];
example
------------------------------------
{"(3,\"{3,1}\")","(12,\"{1,2}\")"}
(1 row)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,主要问题是您需要编写\\",因为这实际上意味着\"(使用"转义"字符串语法)您看到的第一个选择的输出.
| 归档时间: |
|
| 查看次数: |
7209 次 |
| 最近记录: |