json - 获取 SQL Server 2016 中 json 数组的长度

标签 json sql-server-2016

您了解 SQL Server 2016 中新的 JSON_ 支持,因此
假设我连续有这些数据

{
  "BaseBoarding": 1,
  "PriceLineStrategy": "PerPersonPerNight",
  "Currency": "EUR",
  "BasePriceLineList": [
    {
      "RoomTypeId": 1,
      "PeriodId": 1,
      "Price": 10.0
    },
    {
      "RoomTypeId": 1,
      "PeriodId": 2,
      "Price": 100.0
    },
    {
      "RoomTypeId": 1,
      "PeriodId": 3,
      "Price": 190.0
    },
    {
      "RoomTypeId": 2,
      "PeriodId": 1,
      "Price": 280.0
    },
    {
      "RoomTypeId": 2,
      "PeriodId": 2,
      "Price": 310.0
    },
    {
      "RoomTypeId": 2,
      "PeriodId": 3,
      "Price": 340.0
    }
  ]
}

如何以最高效的方式获取“BasePriceLineList”的项目数,最好使用内置的 JSON 支持?

需要写这样的东西:
SELECT JSON_ARRLEN(JsonDataCol, '$.BasePriceline') FROM MyTable
WHERE Id = 1

并得到 6 作为结果。

最佳答案

使用表而不是变量:

SELECT count(priceLineLists.RoomTypeId)
FROM Mytable
CROSS APPLY OPENJSON (JsonDataCol, N'$.BasePriceLineList')
  WITH (
    RoomTypeId int)
      AS priceLineLists

关于json - 获取 SQL Server 2016 中 json 数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141892/

相关文章:

json - 在 Windows 8 中将数据写入文本文件

json - SwiftyJSON 字符串值空

java - 将 JSON 字符串分隔为 android 中的变量

sql-server - 如何删除 SSIS 中数据流任务中的列?

c# - 如何将系统版本化时态表与 Entity Framework 一起使用?

sql-server - 如何检查 SQL Server 表中是否存在列

javascript - 非字符串化 Json 中的字符串化 Json

r - 如何 reshape R 中的相关输出(非旋转结果数据)?

performance - 从 Sql Server 2008 升级到 Sql Server 2016 后,一个快速的存储过程现在变慢了

json - 解析 JSON 数组并加载到配置单元表中