众所周知,目前 PostgreSQL 没有比较两个 json 值的方法。类似的比较json = json不起作用。但是投射json到text之前呢?
然后
select ('{"x":"a", "y":"b"}')::json::text =
('{"x":"a", "y":"b"}')::json::text
Run Code Online (Sandbox Code Playgroud)
返回 true
尽管
select ('{"x":"a", "y":"b"}')::json::text =
('{"x":"a", "y":"d"}')::json::text
Run Code Online (Sandbox Code Playgroud)
返回 false
我尝试了几种具有更复杂对象的变体,它按预期工作。
这个解决方案有什么问题吗?
更新:
需要与 v9.3 兼容