close
文章出處

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

 

 

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

 


加上Root Key

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

SELECT * FROM [dbo].[Client] FOR JSON AUTO,ROOT('SUSU')
GO

 


使用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":"Peter@126.com","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":"Lotte@SOHU.com","PhoneNumber":"+86-16326269674","Birthplace":"Aalborg","SocialSecurityNumber":"1061234"}]

 

 

更多關于JSON的功能

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

ISJSON(判斷是否是JSON格式)、JSON_VALUE(分析JSON文件并提取出值) 、OPENJSON(將JSON文件轉換為普通數據表)

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

 

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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()