Поиск точного строкового значения в JSON - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть столбец, сохраненный в JSON, который выглядит как

имя столбца: s2s_payload

Значения:

{ 
    "checkoutdate":"2019-10-31",
    "checkindate":"2019-10-30",
    "numtravelers":"2",
    "domain":"www.travel.com.mx",
    "destination": {
                       "country":"MX",
                       "city":"Manzanillo"
                   },
    "eventtype":"search",
    "vertical":"hotels"
}

Я хочу запросить точные значения в массиве, ачем возвращать все значения для определенного типа данных. Я использовал JSON_EXTRACT, чтобы получить различное число.

SELECT 
    COUNT(JSON_EXTRACT(s2s_payload, '$.destination.code')) AS total, 
    JSON_EXTRACT(s2s_payload, '$.destination.code') AS destination
FROM 
    "db"."events_data_json5_temp"
WHERE 
    id = '111000'
    AND s2s_payload IS NOT NULL
    AND yr = '2019'
    AND mon = '10'
    AND dt >= '26'
    AND JSON_EXTRACT(s2s_payload, '$.destination.code')
GROUP BY  
    JSON_EXTRACT(s2s_payload, '$.destination.code')

Если я хочу отфильтровать, где "" тип события ":" "поиск" ", как я могу это сделать?

Я пытался использоватьCAST (s2s_payload AS CHAR) = '{"eventtype" ":" "search"}', но это не сработало.

1 Ответ

2 голосов
/ 02 ноября 2019

Вам необходимо использовать json_extract + a CAST, чтобы получить фактическое значение для сравнения с:

CAST(json_extract(s2s_payload, '$.eventtype') AS varchar) = 'search'

или так же, как с json_extract_scalar (и, следовательно, без необходимости CAST):

json_extract_scalar(s2s_payload, '$.eventtype')
...