簡體   English   中英

從SQL Server 2016中的JSON數據返回值

[英]Return values from json data in SQL Server 2016

在SQL Server 2016中,如何使用示例代碼返回“ PageSize”,“ Total”和“ NumberOfPages”值? 我沒有數據的列標題。

我想看看:

SQL查詢輸出

碼:

DECLARE @jsonData NVARCHAR(MAX)

SET @jsonData = N'{
  "PageSize": 500,
  "PageNumber": 2,
  "Total": 994,
    "Items": [
    {
      "Id": 23004801096147,
      "StatusName": "Open",
      "CompanyName": "Microsoft",
      "JobTitle": "Project Manager"
    },
    {
      "Id": 23004801096147,
      "StatusName": "Closed",
      "CompanyName": "Salesforce",
      "JobTitle": "Marketing Manager"
    }
 ],
      "NumberOfPages": 1024
}'

-嘗試1

SELECT
JSON_VALUE(fh.value, '$.PageSize') AS [PageSize],
JSON_VALUE(fh.value, '$.Total') AS [Total],
JSON_VALUE(fh.value, '$.NumberOfPages') AS [NumberOfPages]
FROM OPENJSON(@jsonData, '$.FileHeader') as fh

-嘗試2

SELECT 'PageSize' as 'PageSize', 'Total' as 'Total', 'NumberOfPages' as 
'NumberOfPages'
FROM OPENJSON(@jsonData, '$.FileHeader') as fh

-嘗試3

SELECT 'PageSize' as 'PageSize', 'Total' as 'Total', 'NumberOfPages' as 
'NumberOfPages'
FROM OPENJSON(@jsonData) as fh

-嘗試4

SELECT 'PageSize' as 'PageSize', 'Total' as 'Total', 'NumberOfPages' as 
'NumberOfPages'
FROM OPENJSON(@jsonData)

SQL Server 2016+ JSON: https ://docs.microsoft.com/zh-cn/sql/relational-databases/json/json-data-sql-server ? view = sql-server-2017

這是使用您的數據的示例:

   DECLARE @jsonData NVARCHAR(MAX)

   SET @jsonData = N'{
     "PageSize": 500,
     "PageNumber": 2,
     "Total": 994,
       "Items": [
       {
         "Id": 23004801096147,
         "StatusName": "Open",
         "CompanyName": "Microsoft",
         "JobTitle": "Project Manager"
       },
       {
         "Id": 23004801096147,
         "StatusName": "Closed",
         "CompanyName": "Salesforce",
         "JobTitle": "Marketing Manager"
       }
    ],
         "NumberOfPages": 1024
   }'

   --Using OPENJSON and "WITH"
   SELECT
   [PageSize]
   , [PageNumber]
   , [Total]
   , [NumberOfPages]
   FROM OPENJSON(@jsonData)
   WITH(
   [PageSize] BIGINT '$.PageSize'
   ,[PageNumber] BIGINT '$.PageNumber'
   ,[Total] BIGINT '$.Total'
   ,[NumberOfPages] BIGINT '$.NumberOfPages'
   )

   --This is how you could accomplish the same with JSON_VALUE
   SELECT
   JSON_VALUE(@jsonData, '$.PageSize') AS [PageSize],
   JSON_VALUE(@jsonData, '$.PageNumber') AS [PageNumber],
   JSON_VALUE(@jsonData, '$.Total') AS [Total],
   JSON_VALUE(@jsonData, '$.NumberOfPages') AS [NumberOfPages]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM