使用::text[]转换JSON数组不符合预期的问题求助
::text[]转换JSON数组不符合预期的问题求助
我现在遇到了一个棘手的问题,正在尝试用::text[]转换JSON列里的数组,但结果完全不符合预期,想请教下大家这到底是哪里出了问题。
举个具体的例子说明:
假设我的数据库里有一张表sometable,其中包含一个JSON类型的列object,它的结构是这样的:
{ "properties": ["string", "someotherstring"] }
我写的查询语句如下:
SELECT * FROM db.sometable WHERE 'string' = ANY (ARRAY[object -> 'properties']::text[]);
我原本预期ARRAY[object -> 'properties']::text[]会返回一个由字符串组成的列表,类似这样:{"string", "someotherstring"}
但经过调试后发现,它返回的却是这种奇怪的结果:{"[\"string\", \"someotherstring\"]"}
说白了,它把整个JSON数组当成了单个字符串来处理!这到底是哪里出问题了?
PS:我知道应该用其他函数或者过滤逻辑,但我实际要处理的查询非常动态,复杂度远超过这个例子,::text[]看起来是我目前唯一可行的选择。
提前感谢大家的帮助!
备注:内容来源于stack exchange,提问作者Ismaele
相关产品推荐
相关产品推荐

