这个合法的(!)
CASE
结构返回一个 JSON 数据类型: SELECT CASE WHEN true THEN to_json(1) ELSE to_json('hello') END;
但是:
错误:无法确定多态类型,因为输入具有“未知”类型
它不是“多态的”,它是JSON格式的。
... 因此,作为糟糕的解决方法(丢失数字/字符串的JSON表示),
SELECT to_json(CASE WHEN true THEN 1::text ELSE 'hello' END);
有没有更好的方法将SQL转换为JSON?
SELECT CASE WHEN true THEN json_build_object('result',1) ELSE json_build_object('result','hello') END
。 - Peter Krauss