这种解决方法并不适用如何将json数组转换为文本数组?
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' –
是的!谢谢@OtoShavadze!请将其作为回答发布,以供我正式验收(!)。我正在编辑只为PostgreSQL开发人员制作清单;-) –