前言
要判断一个JSONB数组是否包含特定的元素,可以使用@>操作符。
Integer类型的数组
-- 是否包含数字3
SELECT '[1, 2, 3, 4, 5]'::jsonb @> '[3]'::jsonb; -- true
-- 是否包含数字3
SELECT '[1, 2, 13, 4, 5]'::jsonb @> '[3]'::jsonb; -- false
-- 是否同时包含数字2和3
SELECT '[1, 2, 3, 4, 5]'::jsonb @> '[2, 3]'::jsonb; -- true
-- 是否同时包含数字2和13
SELECT '[1, 2, 3, 4, 5]'::jsonb @> '[2, 13]'::jsonb; -- false
-- 是否包含数字2或13
SELECT ('[1, 2, 3, 4, 5]'::jsonb @> '[2]'::jsonb) or ('[1, 2, 3, 4, 5]'::jsonb @> '[13]'::jsonb); -- true
char类型的数组
-- 是否包含名字
SELECT '["一碗情深", "石昊", "石中天"]'::jsonb @> '["石"]'::jsonb; -- false
SELECT '["一碗情深", "石昊", "石中天"]'::jsonb @> '["石昊"]'::jsonb; -- true