天天看點

SQL Server2016 原生支援JSONSQL Server2016 原生支援JSON

SQL Server2016 原生支援JSON

SQL Server 2005 開始支援 XML 資料類型,提供原生的 XML資料類型、XML 索引以及各種管理 XML 或輸出 XML 格式的函數。

在 SQL Server 時隔 4 個主要版本之後,終于在 Microsoft Ignite 2015 大會上正式宣布,新一代的 SQL Server 2016 正式支援現在最流行的資料交換格式— JSON(JavaScript Object Notation)。

SQL Server 2016 對JSON的支援并不是增加一個JSON資料類型,而是提供一個更輕便的架構,幫助使用者在資料庫裡處理JSON格式資料。

使用者不需要更變現有的表結構,因為SQL Server使用NVARCHAR 資料類型來存儲JSON檔案,并且跟現有技術互相相容,比如全文搜尋、列存儲索引、in-memory OLTP,應用程式不需要做任何修改

不需要使用JSON.Net這類工具分析和處理JSON資料,利用SQL Server内置函數就可以處理JSON資料,輕松将查詢結構輸出為JSON格式,或者搜尋JSON檔案内容。

使用 JSON AUTO 輸出JSON 格式

要将select語句的結果以JSON輸出,最簡單的方法是在後面加上 FOR JSON AUTO

測試版本

Microsoft SQL Server 2016 (CTP2.2) - 13.0.407.1 (X64)   Jul 22 2015 21:19:11   Copyright (c) Microsoft Corporation  Enterprise Evaluation Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor)       
SELECT * FROM [dbo].[Client] 
GO

SELECT * FROM [dbo].[Client] FOR JSON AUTO
GO      
SQL Server2016 原生支援JSONSQL Server2016 原生支援JSON

我們可以把每列中顯示的最大字元數 設定為8192

SQL Server2016 原生支援JSONSQL Server2016 原生支援JSON
SQL Server2016 原生支援JSONSQL Server2016 原生支援JSON

加上Root Key

如果想為FOR JSON 加上Root Key,可以使用ROOT選項來指定 Root Key 名稱

SELECT * FROM [dbo].[Client] FOR JSON AUTO,ROOT('SUSU')
GO      
SQL Server2016 原生支援JSONSQL Server2016 原生支援JSON

使用JSON PATH 輸出JSON格式

當想要自定義輸出JSON格式結構的時候,必須用JSON PATH描述,若SELECT 的字段名稱相同,必須用别名方式來重新命名字段名這樣才可以繼續查詢

另外,如果字段的預設值為NULL,那麼輸出JSON時,JSON會忽略null的隻。如果要顯示null值,可以加上INCLUDE_NULL_VALUES 選項(同樣适用于JSON AUTO字句)

select * from  [dbo].[Client]

--FOR JSON PATH
SELECT * FROM [dbo].[Client] WHERE ClientID =2
FOR JSON PATH

[{"ClientID":2,"Firstname":"Peter","Lastname":"Nielsen","Birthdate":"1998-05-19T00:00:00","Email":"[email protected]","PhoneNumber":"+86-16326269674","Birthplace":"Stockholm","SocialSecurityNumber":"1901531234"}]

--FOR JSON PATH
SELECT * FROM [dbo].[Client] WHERE ClientID =4
FOR JSON PATH,INCLUDE_NULL_VALUES

[{"ClientID":4,"Firstname":"kade","Lastname":null,"Birthdate":"1980-01-06T00:00:00","Email":"[email protected]","PhoneNumber":"+86-16326269674","Birthplace":"Aalborg","SocialSecurityNumber":"1061234"}]      
SQL Server2016 原生支援JSONSQL Server2016 原生支援JSON

更多關于JSON的功能

目前SQL Server 2016 CTP2 對于JSON的功能支援還是比較有限,例如内置處理JSON格式化的函數,

ISJSON(判斷是否是JSON格式)、JSON_VALUE(分析JSON檔案并提取出值) 、OPENJSON(将JSON檔案轉換為普通資料表)

這些功能要等到CTP3才能陸續推出

更多SQL Server2016好用的功能,敬請期待o(∩_∩)o 

轉載于:https://www.cnblogs.com/lyhabc/p/4747694.html