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 |