1

我有一个包含一些值数组的表。

create external table apidetails
(
  inputdetails sting
)
Location 'XXXX'

select inputdetails from apidetails

{ "Name": "api-server1", "ID": "api-1", "tags": ["tag-1","tag-2"] }

我需要结果

| 身份证 | 标签 |

|-------|---------------|

|api-1| 标签-1,标签-2|

我尝试了 select json_extract_scalar(inputdetails ,'$tags'),但它返回错误。

4

1 回答 1

1

这里有几个选项:

选项 1:JSON

select  json_extract_scalar(inputdetails ,'$.ID') as ID
       ,json_extract(inputdetails ,'$.tags')      as tags

from    apidetails
;

  ID   |       tags
-------+-------------------
 api-1 | ["tag-1","tag-2"]

选项 2:数组(varchar)

select  json_extract_scalar(inputdetails ,'$.ID')                       as ID
       ,cast(json_extract(inputdetails ,'$.tags') as array(varchar))    as tags

from    apidetails
;

  ID   |      tags
-------+----------------
 api-1 | [tag-1, tag-2]

选项 3:分隔字符串

select  json_extract_scalar(inputdetails ,'$.ID')                                       as ID
       ,array_join(cast(json_extract(inputdetails ,'$.tags') as array(varchar)),',')    as tags

from    apidetails
;

  ID   |    tags
-------+-------------
 api-1 | tag-1,tag-2
于 2017-03-19T16:36:34.483 回答