gpt4 book ai didi

json - 如何通过 "full"JSON字段查询?

转载 作者:行者123 更新时间:2023-11-29 12:37:20 24 4
gpt4 key购买 nike

我像这样更新了几个字段:

UPDATE designs 
SET prices = '{ "at": 507, "ch": 751, "de": 447 }'
WHERE prices IS NULL;

现在我想找到所有这些行:

SELECT * FROM designs 
WHERE prices = '{ "at": 507, "ch": 751, "de": 447 }';

但是我得到这个错误:

ERROR:  operator does not exist: json = unknown

WHERE prices LIKE '%"at": 507, "ch": 751, "de": 447%' 这样的变体也不起作用。

prices字段来自json类型,使用的PG版本为9.3

最佳答案

jsonb在 Postgres 9.4 中,它有一个相等运算符。此数据类型有效地忽略了无关紧要的空格(以及其他一些无关紧要的细节),因此您的查询将按原样工作:

SELECT *
FROM designs
WHERE prices = '{ "at": 507, "ch": 751, "de": 447 }';

对于 json 来说,这是不可能的,它保留了无关紧要的空白,因此很难在两个 json 值之间建立“相等”。您可以比较文本表示,但这不可靠:

再次使用 pg 9.4,您还可以通过将值动态转换为 jsonb 来使用 json 列:

SELECT *
FROM designs
WHERE prices::jsonb = '{ "at": 507, "ch": 751, "de": 447 }'::jsonb;

关于json - 如何通过 "full"JSON字段查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com