程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 SQL 中循环遍历 JSON 数据集大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 SQL 中循环遍历 JSON 数据集?

开发过程中遇到在 SQL 中循环遍历 JSON 数据集的问题如何解决?下面主要结合日常开发的经验,给出你关于在 SQL 中循环遍历 JSON 数据集的解决方法建议,希望对你解决在 SQL 中循环遍历 JSON 数据集有所启发或帮助;

我希望基于 JsON 数据集创建一个包含两列“时间”和“空气温度”的临时表(请参阅下面的示例 sql 代码)。

在 SQL 中循环遍历 JSON 数据集

我面临的问题是 time 和 air_temperature 在层次树中处于不同级别,其中 air_temperature 是时间级别的子级。所以我需要遍历时间序列级别以找到每次的孩子。

在 .NET 中,我可以使用 for each 循环来完成此操作,但我希望在 MSsql 中执行类似的操作。

foreach (var data in forecast.propertIEs.timeserIEs)
                {
                    insertStmt = String.Format("INSERT INTO dbo.Weatherjson(time,air_temperaturE) VALUES('{0}','{1}')",data.time,data.data.instant.details.air_temperature,cmd = new sqlCommand(insertStmt,conn);
                    cmd.ExecuteNonquery();
                }

DECLARE @Json NVARCHAR(MAX)

SET @Json='{
                "type":"Feature","geometry":{
                    "type":"Point","coordinates":[13.023,55.596,10]},"propertIEs":{
                    "Meta":{
                        "updated_at":"2021-03-10T05:57:53Z","units":{
                            "air_pressure_at_sea_level":"hPa","air_temperature":"celsius","cloud_area_fraction":"%","precipitation_amount":"mm","relative_humIDity":"%","wind_from_direction":"degrees","wind_speed":"m/s"}},"timeserIEs":[
                        {"time":"2021-03-10T06:00:00Z","data":{
                            "instant":{
                                "details":{
                                    "air_pressure_at_sea_level":1019.9,"air_temperature":-1.9,"cloud_area_fraction":7.2,"relative_humIDity":88.8,"wind_from_direction":137.3,"wind_speed":1.2}},"next_12_hours":{
                                    "sumMary":{
                                        "symbol_code":"partlycloudy_day"}},"next_1_hours":{
                                    "sumMary":{
                                        "symbol_code":"clearsky_day"},"details":{"precipitation_amount":0.0}},"next_6_hours":{
                                    "sumMary":{
                                        "symbol_code":"partlycloudy_day"},"details":{"precipitation_amount":0.0}
                                    }
                                }
                            },{"time":"2021-03-10T07:00:00Z","data":{
                            "instant":{
                                "details":{
                                    "air_pressure_at_sea_level":1020.3,"air_temperature":-0.3,"cloud_area_fraction":9.1,"relative_humIDity":80.8,"wind_from_direction":139.9,"next_12_hours":{
                                            "sumMary":{
                                                "symbol_code":"partlycloudy_day"}},"next_1_hours":{
                                            "sumMary":{
                                                "symbol_code":"clearsky_day"},"details":{
                                                "precipitation_amount":0.0}},"next_6_hours":{
                                            "sumMary":{
                                                "symbol_code":"partlycloudy_day"},"details":{"precipitation_amount":0.0}
                                            }
                                        }
                                    }]
                                }
                            }'

SELECT *
FROM OPEnjsON(@Json)
WITH (   
                time    datetiR_237_11845@e  '$.propertIEs.timeserIEs',air_temperature nvarchar(50) '$.propertIEs.timeserIEs.data.instant.details' 
               
              
 ) 

解决方法

您需要根据解析的 JSON 的结构使用正确的 path 表达式:

SELECT *
FROM OPENJSON(@json,'$.properties.timeseries')
WITH (   
   time datetiR_237_11845@e '$.time',air_temperature nvarchar(50) '$.data.instant.details.air_temperature' 
)

大佬总结

以上是大佬教程为你收集整理的在 SQL 中循环遍历 JSON 数据集全部内容,希望文章能够帮你解决在 SQL 中循环遍历 JSON 数据集所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:数据集