BigQuery JSON_VALUE_ARRAY, JSON_QUERY_ARRAY 差異跟小雷

JSON_VALUE_ARRAY 只吃 scalar value

任何不在 {string, number,boolean} 都會變成 NULL, 像是

select JSON_VALUE_ARRAY('{"product_ids": [UCCU]}', "$.product_ids");

--
Row	f0_	
1	null

但如果裡面有 NULL 則會噴錯

select JSON_VALUE_ARRAY('{"product_ids": [null]}', "$.product_ids");

Array cannot have a null element; error in writing field f0_

啊如果我就是要 scalar value 裡面又可能有 null 怎麼辦? 這邊可以改用 JSON_QUERY_ARRAY 替代,但因為 output 不同(多了 double quote),視資料情況可以直接 trim 掉處理

SELECT
    ARRAY(SELECT TRIM(item, '"')
FROM
    UNNEST(JSON_QUERY_ARRAY('{"product_ids": [null, 1, 2, 3]}', "$.product_ids")) AS item);
comments powered by Disqus