如何让以下查询返回' true'反映我需要右边数组中至少有一个值,包含在左边的数组中?
SELECT '["fun", "movies"]'::jsonb @> '["fun", "movies","x"]'::jsonb;
以上内容返回false
(因为' x'不在左侧数组中)。
我尝试了?|
operator link
SELECT '["fun", "movies"]'::jsonb ?| '["fun", "movies","x"]'::jsonb;
但是postgres会返回错误
错误:运算符不存在:jsonb?| jsonb第2行:选择
' ["有趣","电影"]' :: jsonb?| ' ["有趣","电影"," x ...提示:没有运算符匹配给定的名称和参数类型。您可能需要添加 显式类型转换。 SQL状态:42883字符:147
答案 0 :(得分:1)
首先需要将jsonb数组“转换”为postgres数组:
t=# SELECT '["fun", "movies"]'::jsonb ?| translate('["fun", "movies","x"]'::jsonb::text,'[]','{}')::text[];
?column?
----------
t
(1 row)