我有一个带有使用 JSON 函数的 CASE 的 SELECT 语句,它在升级到 PostgreSQL 10 时停止工作。
SELECT
CASE
WHEN type = 'a' THEN data #>> '{key_a,0}'
WHEN type = 'b' THEN data #>> '{key_a,0,key_b,0}'
WHEN type = 'c' THEN jsonb_object_keys(data #> '{key_c,key_d}')
ELSE NULL
END AS foo,
CASE
WHEN type = 'a' THEN jsonb_array_elements_text(data -> 'key_e')
WHEN type = 'b' THEN data #>> '{key_f,0,key_g}'
ELSE NULL
END AS bar
错误:在 CASE 中不允许设置返回函数
提示:您也许可以将 set-returning 函数移动到 LATERAL FROM 项中。
我不明白如何使用 LATERAL FROM 是一种替代方法。事实上,即使阅读PG 文档(第 7.2.1.5 节) ,我也不完全理解为什么要使用 LATERAL 。
任何想法如何将此语句转换为与 PG 10 一起使用?