在SELECT查询中循环PostgreSQL数组,而不是在PLPGSQL函数中循环

在SELECT查询中循环PostgreSQL数组,而不是在PLPGSQL函数中循环,sql,arrays,postgresql,Sql,Arrays,Postgresql,我在PostgreSQL表中有一个text[]数组列,我需要在SELECT查询(普通SQL,而不是plpgsql)中的数组中的每个元素上运行char_length(),这样,如果任何元素的长度超过25个字符,SELECT将返回“t”和“f”。我知道我可以在自定义plpgsql函数中循环文本[],但由于其他原因,我需要找到一种直接在SQL中执行此操作的方法 有可能吗?你可以用它来打开阵列,然后做一些简单的事情: 存在和选择1业务只是将结果集折叠为单个布尔值的方便方法(我相信还有其他方法)。从Pos

我在PostgreSQL表中有一个text[]数组列,我需要在SELECT查询(普通SQL,而不是plpgsql)中的数组中的每个元素上运行char_length(),这样,如果任何元素的长度超过25个字符,SELECT将返回“t”和“f”。我知道我可以在自定义plpgsql函数中循环文本[],但由于其他原因,我需要找到一种直接在SQL中执行此操作的方法

有可能吗?

你可以用它来打开阵列,然后做一些简单的事情:


存在
选择1
业务只是将结果集折叠为单个布尔值的方便方法(我相信还有其他方法)。

从PostgreSQL 8.4开始,您可以使用
unest
函数:

SELECT MAX((char_length(string) > 25)::INT)::BOOLEAN
FROM (
    SELECT my_array,UNNEST(my_array) AS string
    FROM my_table
) AS x
GROUP BY my_array;

哦,对了,我以为那是OP想要的,但仔细检查,它不是。。。答案已更新。谢谢
SELECT MAX((char_length(string) > 25)::INT)::BOOLEAN
FROM (
    SELECT my_array,UNNEST(my_array) AS string
    FROM my_table
) AS x
GROUP BY my_array;