在 CASE 中,在 Postgres 10.6 中不允许设置返回函数
set returning functions are not allowed in CASE, in Postgres 10.6
sql不是我的强项
从 postgres 9.6 升级到 10.6,我从这个查询中得到一个错误:
SELECT id, (CASE WHEN jsonb_typeof(content->'user')='array' THEN jsonb_array_elements(content -> 'user')
ELSE content::jsonb->'user' END) As att FROM event;
错误:
set returning functions are not allowed in CASE
我返回的结果(来自 v 9.6):
id, att
1, {"name": "Andrew"},
2, {"name": "Stacey"},
3, null
'user' 元素也可以为空。
这就是 'content' 列的外观(两者之一)
{"user": [{"name": "Andrew", "country_code": "GBR"}]]
{"user": null}
任何帮助请求都停留在这个问题上一段时间了
我想你可以使用
SELECT id, att
FROM event,
jsonb_array_elements(CASE WHEN jsonb_typeof(content->'user')='array'
THEN content -> 'user'
ELSE jsonb_build_array(content->'user')
END) AS user(att);
sql不是我的强项
从 postgres 9.6 升级到 10.6,我从这个查询中得到一个错误:
SELECT id, (CASE WHEN jsonb_typeof(content->'user')='array' THEN jsonb_array_elements(content -> 'user')
ELSE content::jsonb->'user' END) As att FROM event;
错误:
set returning functions are not allowed in CASE
我返回的结果(来自 v 9.6):
id, att
1, {"name": "Andrew"},
2, {"name": "Stacey"},
3, null
'user' 元素也可以为空。
这就是 'content' 列的外观(两者之一)
{"user": [{"name": "Andrew", "country_code": "GBR"}]]
{"user": null}
任何帮助请求都停留在这个问题上一段时间了
我想你可以使用
SELECT id, att
FROM event,
jsonb_array_elements(CASE WHEN jsonb_typeof(content->'user')='array'
THEN content -> 'user'
ELSE jsonb_build_array(content->'user')
END) AS user(att);