【发布时间】:2015-07-29 18:54:23
【问题描述】:
我有一个带有 JSON 列的 PostgreSQL 表,我正在尝试获取该列中所有不同键的列表。我为此创建了一个查询:
SELECT DISTINCT json_object_keys(j) FROM t;
其中t 是表,j 是 JSON 列。这可以正确处理一小组数据,它会列出j 中存在的所有键,而不会重复它们。但是,添加更多数据后,它不再起作用,出现错误:
ERROR: cannot call json_object_keys on a scalar
我不确定为什么会发生这种情况。通过一次仅将查询限制为某些行,我发现了导致错误的行。在该行中,j 是 null。但是,调用SELECT json_object_keys(null); 不会导致此错误,而调用SELECT json_object_keys(j) FROM t WHERE id=12; 会导致此错误,并且此行中的j 只是null。我真的不确定从这里去哪里。
所以我想我的问题是什么可能导致这种情况,我该如何解决它或防止它发生?
运行 PostgreSQL 9.3.9
编辑:好的,我可能已经先发制人了。我发现有问题的行中的j 不是null,而是'null'::json,仅选择行并不清楚。这确实会导致标量错误,所以现在我只需要找出一种方法来选择j 不是'null'::json 的行。
【问题讨论】:
标签: json postgresql