此解决方法不起作用
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!
Run Code Online (Sandbox Code Playgroud)
那么,如何获取文本的真实数组?
PS:使用所谓的“头等公民” JSONb,同样的问题。
编辑:@OtoShavadze好的答案(注释已解决!)之后,PostgreSQL开发人员的清单:为什么x::text 不进行强制转换?(使用第9.5.6页),为什么它不生成警告或错误?