我有一个数组列,并且我想要获取其中的前N
个元素(保留数组数据类型)。有没有某种好的方法来实现这一点?最好不用将其展开、排名和再次聚合成数组。
我也可以使用以下方法来获取前两个元素:
WITH data AS
(
SELECT 1001 as id, ['a', 'b', 'c'] as array_1
UNION ALL
SELECT 1002 as id, ['d', 'e', 'f', 'g'] as array_1
UNION ALL
SELECT 1003 as id, ['h', 'i'] as array_1
)
select *,
[array_1[SAFE_OFFSET(0)], array_1[SAFE_OFFSET(1)]] as my_result
from data
但是很明显这不是一个好的解决方案,因为当某个数组只有1个元素时,它会失败。
ARRAY_LENGTH(array_1)
。这将给出数组的长度。 - Sebastian Siemens