2
林新手,PostgreSQL的JSON - SEACH如果陣列包括元件
我有2分JSON的:
alergy_to
{ 「0」: 「胡蘿蔔」, 「1」:」香蕉」, 「2」: 「胡椒」}
food_constains
{ 「0」: 「香蕉」, 「1」: 「牛奶」}
如何檢查我的 「food_constains」 JSON場constains這是在alergy_to JSON
列出,並返回true或false,或同等價值
非常感謝!我已將它編輯爲:WITH alergy_to(data)AS(VALERES ('{「0」:「carrot」,「1」:「banana」,「2」:「pepper」}':: JSON) ) ,food_contains(data)AS(VALUES ('{「0」:「banana」,「1」:「milk」}':: JSON) ) SELECT I TRUE as IHAVEALERGENS FROM alergy_to at,json_each_text(at.data )alergy_item, food_contains fc,json_each_text(fc.data)food_item WHERE food_item.value = alergy_item.value group by IHAVEALERGENS; – blackmoon
和另一個變體 - 帶有表格:'WITH alergy_to(data)AS(VALUES('['carrot','banana','pepper']':: JSON)),food_contains(data)AS(VALUES(' 「香蕉」, 「牛奶」]':: JSON)) 選擇作爲IHAVEALERGENS FROM alergy_to在,json_array_elements_text(at.data)alergy_item, food_contains FC,json_array_elements_text(fc.data)FOOD_ITEM WHERE food_item.value = alergy_item TRUE .value group by IHAVEALERGENS;' – blackmoon
'SELECT true'不是一個好主意,因爲查詢會返回與匹配值相同數量的行。特別是,如果沒有匹配的值,它將不返回行。如果您使用聚合函數,例如'SELECT count(*)> 0',你總是得到一行布爾值。 – klin