Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取JSON格式的值数组_Json_Sql Server_Tsql - Fatal编程技术网

如何获取JSON格式的值数组

如何获取JSON格式的值数组,json,sql-server,tsql,Json,Sql Server,Tsql,假设我有一个名为FamousPeople的表,该表有一个列名,有3个名称: 约翰 玛丽 佛莱迪·摩克瑞 这样做: SELECT 'Some Random Value' AS someColumnName, (SELECT name FROM FamousPeople FOR JSON PATH) AS famousPeopleName FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 我得到这个结果: { "someColumnName":

假设我有一个名为FamousPeople的表,该表有一个列名,有3个名称:

约翰 玛丽 佛莱迪·摩克瑞 这样做:

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"}
  ]
}
我想知道是否有任何方法可以将著名的UspeopleName结果列作为字符串数组:

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

当然,只使用T-SQL功能,不使用T-SQL中的mad scientist字符串操作(在荷兰称为kick)

您可以使用JSON_查询和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:一些随机值, 著名人物姓名: [ 厕所, 玛丽, 佛莱迪·摩克瑞 ] }
T-SQL中那些疯狂的科学家字符串操作也是T-SQL的特性