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 格式ui
要將select語句的結果以JSON輸出,最簡單的方法是在後面加上 FOR JSON AUTOlua
測試版本spa
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
咱們能夠把每列中顯示的最大字符數 設置爲8192code
加上Root Keyblog
若是想爲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