表foo
有一列data
,它将json存储为:
{ values: ["AR", "BR", "CR"] }
我想选择foo.values中出现bar.value
的所有行。当我这样做时:
SELECT * FROM foo
LEFT JOIN bar ON bar.id = foo.id
WHERE foo.data::jsonb->'values' @> bar.value::jsonb;
我收到错误
[Code: , SQL State: 22P02] ERROR: invalid input syntax for type json
Detail: Token "BR" is invalid.
Where: JSON data, line 1: BR
如果我将foo.value::jsonb
替换为'"BR"'
,我将无法获得。
有解决方案吗?或者甚至有更好的查询?