#sql #arrays #where-clause #presto
#sql #массивы #where-предложение #presto
Вопрос:
Данные в массиве выглядят как XXXX: «False». Я использовал
element_at(array_name,'Field') and contains(map_keys(array_name),'Field')
. Они только проверяют, присутствует ли элемент в массиве. Но если «Поле» имеет значение «true», как мне проверить это значение?
Комментарии:
1. Каков точный тип
array_name
? (чтоSELECT DISTINCT typeof(array_name) ...
возвращает?)2. Возможно, я ошибаюсь в объяснении, но в отдельном запросе повторяется «map (varchar, varchar)», я думаю, что array_name выше — это карта, а ‘Field — элемент.
Ответ №1:
Предполагая, что у вас есть карта под рукой, и что вы хотите проверить значение данного ключа, вы можете просто использовать element_at()
:
where element_at(array_name, 'Field') = 'True'