Postgresql 当只有一个多维元素时,generate_subscripts(array,2)返回两条记录

Postgresql 当只有一个多维元素时,generate_subscripts(array,2)返回两条记录,postgresql,multidimensional-array,set-returning-functions,Postgresql,Multidimensional Array,Set Returning Functions,当多维数组图像中只有一个多维元素时,为什么返回2条记录 SELECT images FROM ( SELECT images, generate_subscripts(images, 2) AS s FROM listings WHERE listings.id = 2 ) as foo; 注意:为了便于查看,我缩短了base64字符串 id | 2 created_at | 2017-04-19 23:44:50.150913

当多维数组
图像中只有一个多维元素时,为什么返回2条记录

SELECT images
FROM  (
   SELECT images, generate_subscripts(images, 2) AS s
   FROM listings
   WHERE listings.id = 2
   ) as foo;
注意:为了便于查看,我缩短了base64字符串

id               | 2
created_at       | 2017-04-19 23:44:50.150913+00
posted_by        | 10209280753550922
images           | {{/9j/4AAJRgAB2dgKd/9k=,3/2/image-3-2-1492645490308.jpeg}}

数组中有两个元素,用逗号分隔:

{{/9j/4AAJRgAB2dgKd/9k=,3/2/image-3-2-1492645490308.jpeg}}
{{"/9j/4AAJRgAB2dgKd/9k=,3/2/image-3-2-1492645490308.jpeg"}}
见:

在指定维度中,每个元素返回一行(不是每个维度一行):

generate_subscripts
是一个生成集合的方便函数 给定数组的指定维度的有效下标数。 对于没有请求的数据的数组,返回零行 维度,或为空数组(但为空数组返回有效下标) 空数组元素)

如果该元素是单个元素,则必须对其进行双引号,以避免逗号的特殊含义:

{{/9j/4AAJRgAB2dgKd/9k=,3/2/image-3-2-1492645490308.jpeg}}
{{"/9j/4AAJRgAB2dgKd/9k=,3/2/image-3-2-1492645490308.jpeg"}}
旁白:在现代Postgres中,您可以使用以下更简单的等效查询:

SELECT images
FROM   listings, generate_subscripts(images, 2) s
WHERE  id = 2;
这是一个隐式
交叉连接侧向
。见:


  • 是的,对不起!我不知道这一个怎么会没有我的答案。