从数组数组中访问数组项

时间:2016-01-06 00:27:02

标签: arrays postgresql

这么简单......我需要检索一个数组数组的项,所以该项必须是一个简单的数组。例如:

WITH t AS (SELECT '{{1,2,3},{333,444,555}}'::int[][] as a, '{{{{1,2}}}}'::int[] as b)
SELECT 
     a[2],    -- returns null (!), why not works?
     a[2:2],  -- returns array-into-array, not simple array
     b[1][1], -- also null
     b[1][1][1:2],  -- another ugly array-into-array-into...-array
     a[1][1]        -- is correct, but only works with scalars
FROM t;

结果是NULL,{{333,444,555}},NULL,{{{{1,2}}}},1 ...我需要一个简单的数组 a [2] {333,444,555} ... 如何访问它?

PS:guide和google-examples仅显示切片......也许它是如此明显但我不记得为什么a[2]在PostgreSQL中无效。

2 个答案:

答案 0 :(得分:1)

I had forgotten what we discussed here:它是“数组数组”的限制形式......命名为“多维数组”......但我坚持以模糊的方式思考,即有时在数组数组中思考。 ..

最佳答案来自pgsql-hackers.at.postgresql.org论坛的Tom Lane,“Postgres中的多维数组'数组数组'”

因此,在“多维数组”世界中,不存在我所期望的那种“访问数组项”。

正如@ViníciusGobboA.deOliveira在这里评论的那样,唯一的解决方案是通过PL / SQL(低性能)或C(高性能)编写函数。

答案 1 :(得分:0)

renderMovie(item) { console.log(item.image); return ( <TouchableOpacity onPress={()=>{this.toContent(item.id)}}> <View style={styles.Items}> <Image source={{uri:item.image}} style={styles.thumbnail} /> <View style={styles.rightContainer}> <Text style={styles.title}>{item.title}</Text> <Text style={styles.mtitle}>{item.byzd1}</Text> </View> </View> </TouchableOpacity> ); } 将返回 a[2:2] 类型,而非冒号符号 integer[] 将返回 a[2] 类型,实际上在您的情况下应该是一个数组。基于documentation

  

通过为一个编写下限:上限来表示数组切片   或更多数组维度。

检查以下代码:

integer