【发布时间】:2021-02-22 07:13:40
【问题描述】:
我有一个包含对象或对象数组的 json 字段。如果字段只包含一个对象,我需要从对象中加入一个键,如果有数组,我需要使用横向连接。我使用jsonb_typeof() 来确定它是数组还是对象,并想做这样的事情
SELECT DISTINCT ON
(id) id,
jsonb_typeof(field) AS type,
CASE WHEN jsonb_typeof = 'object' THEN field->>'key' END
FROM
test_table
CASE WHEN jsonb_typeof = 'array' THEN lateral JOIN expression
有可能做这样的事情吗?此时我得到:
未定义的列错误(jsonb_typeof)
...在什么条件下
【问题讨论】:
-
伪代码太多,无法得到准确的答案。请提供示例数据和所需结果以阐明您的要求
-
如果你必须做一个有条件的加入,那就出问题了。如果您的数据模型定义正确,则永远不必进行条件连接。
-
在数据库中存储 JSON blob 已经够糟糕的了,使用基于该 JSON 的
JOIN运算符更糟糕。您需要重新设计数据库以将这些 JSON blob 规范化为实际表和列,否则您将陷入痛苦的世界。 -
条件连接,听起来像左连接。
标签: sql postgresql eloquent