Sql 使用通配符的OpenJson
我有一个SQL查询,使用OPENJSON将JSON数据导入到表中。我的问题是我需要的数据是嵌套的。如何在JSON路径中使用通配符来获取所需内容Sql 使用通配符的OpenJson,sql,json,sql-server,sql-server-json,Sql,Json,Sql Server,Sql Server Json,我有一个SQL查询,使用OPENJSON将JSON数据导入到表中。我的问题是我需要的数据是嵌套的。如何在JSON路径中使用通配符来获取所需内容 SELECT @Set = BulkColumn FROM OPENROWSET (BULK 'Sets.json', DATA_SOURCE = 'MyAzureJson', SINGLE_BLOB) JSON; INSERT INTO [Sets] SELECT [name] FROM OPENJSON(@Set) WITH( [name
SELECT @Set =
BulkColumn FROM OPENROWSET
(BULK 'Sets.json', DATA_SOURCE = 'MyAzureJson', SINGLE_BLOB) JSON;
INSERT INTO [Sets]
SELECT [name]
FROM OPENJSON(@Set)
WITH(
[name] nvarchar(50) '$.*.name'
)
我的json文件设置如下
{
"testOne" : {
name: "nameOne"
},
"testTwo : {
name: "nameTwo"
}
}
我所犯的每一个错误
JSON路径格式不正确。在位置2处发现意外字符“*”
我试过了。*[]而且据我所知,OPENJSON中不支持通配符。 相反,您可以通过忽略搜索中的字段名来解决问题。为此使用
JSON\u值
INSERT INTO [Sets]
SELECT
JSON_VALUE([value], '$.name')
FROM
OPENJSON(@Set)
说明:如果您没有在WITH
子句中定义OPENJSON的变量,而是从OPENJSON(@Set)
查询中执行一个简单的SELECT*,您将得到一个包含键、值和类型列的结果(参见下面的输出示例)。由于键
包含有问题的字段名,您可以忽略该部分,只需查看数据的值
列
[key] [value] [type]
----- ------- ------
testOne { name: "nameOne" } 5
testTwo { name: "nameTwo" } 5