-2

假设我有一个FamousPeople带有 column的表Name,有 3 个名称:

  1. John
  2. Mary
  3. Freddie Mercury

这样做:

SELECT
    'Some Random Value' AS someColumnName,
    (SELECT name FROM FamousPeople
     FOR JSON PATH) AS famousPeopleName
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

我得到这个结果:

{
  "someColumnName": "Some Random Value",
  "famousPeopleName":
  [
    {"name":"John"},
    {"name":"Mary"},
    {"name":"Freddie Mercury"}
  ]
}

我想知道是否有任何方法可以将famousPeopleName结果列作为字符串数组获取:

{
  "someColumnName": "Some Random Value",
  "famousPeopleName":
  [
    "John",
    "Mary",
    "Freddie Mercury"
  ]
}

当然,只使用 T-SQL 功能,没有疯狂科学家在 T-SQL 中进行字符串操作(在荷兰也称为 kick)

4

1 回答 1

0

您可以使用JSON_QUERYand构建数组FOR XML,然后提取整个 json 片段:

declare @FamousPeople table([name] varchar(50))

insert into @FamousPeople values
('John'),('Mary'),('Freddie Mercury')

SELECT 'Some Random Value' AS someColumnName,
JSON_QUERY(
    '[' + STUFF(( SELECT ',' + '"' + [name] + '"' 
    FROM @FamousPeople 
    FOR XML PATH('')),1,1,'') + ']' ) famousPeopleName  
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 

结果:

{
    "someColumnName": "Some Random Value",
    "famousPeopleName": 
    [
        "John",
        "Mary",
        "Freddie Mercury"
    ]
}
于 2018-08-17T15:53:05.973 回答