gpt4 book ai didi

c# - 使用 OPENJSON 将两个数组的对象插入 SQL 数据库

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:03 24 4
gpt4 key购买 nike

我想知道如何将这个 由两个 float 数组组成 的 JSON 对象放入 SQL 数据库表中:

{
"Latitudes": [
53.665084,
53.665084,
53.665184,
53.665284
],
"Longitudes":[
17.342853,
17.342953,
17.343053,
17.343153
]
}

表格有 3 列:CoordID、Latitude、Longitude(CoordID 是自动递增的)。我想将这些表中的每一对([0]、[0]/[1][1] 等)作为表中的一行。 所以对于这个对象,它将是 4 行。

这里的代码并没有像我预期的那样工作——它只是将空值放在“经度”和“纬度”列的位置,并且它只创建一行...(而不是 4 行):

declare @json NVARCHAR(MAX);
SET @json=
'{
"Latitudes": [
53.665084,
53.665084,
53.665184,
53.665284
],
"Longitudes":[
17.342853,
17.342953,
17.343053,
17.343153
]
}'

insert into dbo.Coords(
[Latitude],[Longitude])
select Latitude, Longitude from OPENJSON(@json)
WITH(
Latitude FLOAT '$."Latitudes"',
Longitude FLOAT '$."Longitudes"')

附言OPENJSON() 函数适用于 SQL Server 2016 版或 Azure SQL 数据库。以防万一有人会尝试在 SSMS 2014 中运行它,即 ;-)

最佳答案

您可以仅使用 OPENJSON() 检索您的数据。这里的重要部分是,当 OPENJSON() 解析一个 JSON 数组时,函数returns该数组中元素的索引作为键,因此您可以在这些索引上加入结果。

T-SQL:

DECLARE @json NVARCHAR(MAX);
SET @json=
'{
"Latitudes": [
53.665084,
53.665084,
53.665184,
53.665284
],
"Longitudes": [
17.342853,
17.342953,
17.343053,
17.343153
]
}'

--INSERT INTO dbo.Coords([Latitude], [Longitude])
SELECT j1.[value], j2.[value]
FROM
OPENJSON(@json, '$.Latitudes') j1,
OPENJSON(@json, '$.Longitudes') j2
WHERE j1.[key] = j2.[key]

输出(来自 SELECT 语句):

---------------------
value value
---------------------
53.665084 17.342853
53.665084 17.342953
53.665184 17.343053
53.665284 17.343153

关于c# - 使用 OPENJSON 将两个数组的对象插入 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56228168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com