I need to query json strings based on different filters from the same table
CASE
WHEN provider = 0 THEN JSON_VALUE_ARRAY (raw_data, '$.countries_served')
WHEN provider = 1 THEN JSON_VALUE (raw_data,
'$.MerchantCountryISOAlpha3')
WHEN provider = 2 THEN JSON_VALUE (raw_data, '$.operator.country.name')
WHEN provider = 3 THEN JSON_VALUE (raw_data,
'$.countryName')
WHEN provider = 4 THEN JSON_VALUE (raw_data, '$.countries')
This CASE
statement returns an error:
No matching signature for operator CASE; all THEN/ELSE arguments must be coercible to a common type but found: ARRAY, STRING; actual argument types (WHEN THEN) ELSE: (BOOL ARRAY) (BOOL STRING) (BOOL STRING) (BOOL STRING) (BOOL STRING) NULL at [6:3]
Why so and how to make it work?