这个解决方法不起作用。
那么,如何获取真正的文本数组?
PS:使用被认为是“一等公民”的JSONb时,同样存在这个问题。
编辑:在@OtoShavadze提供的好答案之后(评论解决!),给PostgreSQL开发人员的一个“清单”:为什么
CREATE FUNCTION json_array_castext(json) RETURNS text[] AS $f$
SELECT array_agg(x::text) FROM json_array_elements($1) t(x);
$f$ LANGUAGE sql IMMUTABLE;
-- Problem:
SELECT 'hello'='hello'; -- true...
SELECT (json_array_castext('["hello","world"]'))[1] = 'hello'; -- false!
那么,如何获取真正的文本数组?
PS:使用被认为是“一等公民”的JSONb时,同样存在这个问题。
编辑:在@OtoShavadze提供的好答案之后(评论解决!),给PostgreSQL开发人员的一个“清单”:为什么
x :: text
不是强制转换? (使用pg 9.5.6),为什么它不会产生警告或错误?
json_array_elements_text
替代json_array_elements
。 - Oto Shavadze