我在PostgreSQL表中有一個text [] ARRAY列,我需要在SELECT查詢中的數組內的每個元素上運行char_length()(正常的SQL,而不是plpgsql),以便如果任何元素的長度超過25個字符,則SELECT返回't'和'f'。我知道我可以遍歷自定義plpgsql函數中的文本[],但由於其他原因,我需要找到一種方法在SQL中直接執行此操作。在SELECT查詢中循環PostgreSQL數組,而不是在PLPGSQL函數中
可能嗎?
我在PostgreSQL表中有一個text [] ARRAY列,我需要在SELECT查詢中的數組內的每個元素上運行char_length()(正常的SQL,而不是plpgsql),以便如果任何元素的長度超過25個字符,則SELECT返回't'和'f'。我知道我可以遍歷自定義plpgsql函數中的文本[],但由於其他原因,我需要找到一種方法在SQL中直接執行此操作。在SELECT查詢中循環PostgreSQL數組,而不是在PLPGSQL函數中
可能嗎?
了PostgreSQL 8.4,你可以使用UNNEST
功能:
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想要的東西,但仔細檢查,這不是...應答更新。謝謝。 – Flimzy