嘗試一下sql server2016裡面的json功能

来源:http://www.cnblogs.com/Gin-23333/archive/2016/04/15/5395769.html
-Advertisement-
Play Games

前2天下載了一個2016的rc版本來玩一下,首先感覺是~開發者版本免費啦!!撒花!!!另外一個東西,sql server 2016能支持json 的解析和應用啦,雖然我不知道它的性能如何,先來一發測試一下功能 測試一下基本的,從查詢結果裡面構造一個json 的格式 這個是預設模式下麵使用json的查 ...


前2天下載了一個2016的rc版本來玩一下,首先感覺是~開發者版本免費啦!!撒花!!!另外一個東西,sql server 2016能支持json 的解析和應用啦,雖然我不知道它的性能如何,先來一發測試一下功能

 測試一下基本的,從查詢結果裡面構造一個json 的格式

create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int)

insert into t1 values ('張三',90,80),('李四',75,90),('王五',68,100)
select * from t1

select * from t1 for json auto


--查詢結果
ID          name                                               Chinese     Math
----------- -------------------------------------------------- ----------- -----------
1           張三                                                 90          80
2           李四                                                 75          90
3           王五                                                 68          100

--json 格式
[{"ID":1,"name":"張三","Chinese":90,"Math":80},{"ID":2,"name":"李四","Chinese":75,"Math":90},{"ID":3,"name":"王五","Chinese":68,"Math":100}]

 

 

這個是預設模式下麵使用json的查詢結果。是不是十分清晰

然後我們再接再厲,第二波是這樣紙的。假如我們要繼續搞有層級關係的。我們還可以這樣寫。比方說把成績放在一個叫points 的節點裡面, 也是可以分層的

select ID,
        name,
        Chinese as [Points.Chinese],
        Math as [Points.Math]
    from t1 for json path


--結果json
[
{"ID":1,"name":"張三","Points":{"Chinese":90,"Math":80}},
{"ID":2,"name":"李四","Points":{"Chinese":75,"Math":90}},
{"ID":3,"name":"王五","Points":{"Chinese":68,"Math":100}}
]

他們的分數就放在了json 裡面的,被一個point 包住了。

如果說我要在這個結果裡面添加一個頭來包住,當然,我可以使用每個列來個別名 [root.col] 來實現,然而就有點啰嗦了。所以我們可以使用這個root 的關鍵字來添加一個頂節點

select ID,
        name,
        Chinese as [Points.Chinese],
        Math as [Points.Math]
    from t1 for json path,root('root') 

--返回的json結果
{"root":[
    {"ID":1,"name":"張三","Points":{"Chinese":90,"Math":80}},    {"ID":2,"name":"李四","Points":{"Chinese":75,"Math":90}},{"ID":3,"name":"王五","Points":{"Chinese":68,"Math":100}}]}    

當然咯,查詢嘛,錄入數據總是難免遇到null值,在這方面,for json 是如何處理的呢? 我在測試表添加一條數據在來查詢

insert into t1 values ('趙六',100,null)


select ID,
        name,
        Chinese as [Points.Chinese],
        Math as [Points.Math]
    from t1 
        where id in(3, 4)
    for json auto

--json的返回結果
[{"ID":3,"name":"王五","Points.Chinese":68,"Points.Math":100},{"ID":4,"name":"趙六","Points.Chinese":100}]

auto 模式下,如果是空值,將會忽略該屬性。這樣的話很容易就每一個集合返回的屬性數量都不一來,這樣不好看。所以應對這種情況,我們可以使用 incluede_null_values 關鍵字,即使是空值,也帶出來

 

select ID,
        name,
        Chinese as [Points.Chinese],
        Math as [Points.Math]
    from t1 
        where id in(3, 4)
    for json auto, include_null_values

--json 的返回結果
[{"ID":3,"name":"王五","Points.Chinese":68,"Points.Math":100},{"ID":4,"name":"趙六","Points.Chinese":100,"Points.Math":null}]

使用了這個關鍵字,就可以把空值帶出來,裡面的值是Null 值

 

好,本次實驗到此為止~然後我試下解析json 的語法之類的再分享~

感想就是其實語法應該跟xml類型的相差無幾~但是資料庫之前支持了xml 數據類型,然後json卻只能通過字元串去轉換解析。這個後面我再實驗一下

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 那些年追過的FreeBSD分支,有debian系的kFreeBSD,arch系的archBSD現在叫pacBSD,gentoo系的gentooBSD;但基本上在虛擬機環境很難成功安裝,所以連持續嘗試的機會不多。 這段時間,又跑出來了ubuntuBSD,基本上還是基於kfreebsd的成果和思路,今天 ...
  • 用戶分類 按位置分:本地賬戶、遠程賬戶 按功能分:普通用戶、超級用戶(root) 普通用戶: (1)系統用戶:UID 1-499 (2)本地用戶:UID 500+ 每一個用戶,都有一個同名的用戶組。 用戶、組配置文件: 用戶 用戶組 (1)賬號信息 /etc/passwd /etc/group (2 ...
  • ls 作用:查看目錄下的文件 格式:直接ls查看當前所在目錄,或者 ls 參數 /目錄名 參數: -l 查看詳細信息 -a 顯示隱藏文件 . 表示當前目錄 .. 上級目錄 -G 用不同顏色標記不同類型文件(mac OS下常用,ubuntu預設ls = ls -G) pwd 作用:查看路徑 格式:直接 ...
  • 系統是lamp環境(centos6.7+apache2.2+mysql5.7+php5.3),預設 軟體下載到/usr/local/src目錄下 redis安裝在/app/local/redis目錄下 #wget http://download.redis.io/releases/redis-2.8 ...
  • 點陣圖(Bitmap)當然是最簡單的,它Windows顯示圖片的基本格式,其文件擴展名為*.BMP。在Windows下,任何各式的圖片文件(包括視頻播放)都要轉化為點陣圖個時候才能顯示出來,各種格式的圖片文件也都是在點陣圖格式的基礎上採用不同的壓縮演算法生成的(Flash中使用了適量圖,是按相同顏色區域存儲... ...
  • CentOS7 1、安裝系統 基礎設施伺服器:Java平臺、Linux遠程管理、開發工具 2、打開網路連接: (1)cd /etc/sysconfig/network-scripts/ #進入網路配置文件目錄 (2)vi ifcfg-eno16777736 #編輯配置文件,修改以下內容 (3)將on ...
  • 1. SQlite介紹 SQLite是一款開源,輕量級,嵌入式關係型資料庫。是一個學習關係型資料庫的很好的工具。SQLite除了作為一個存儲容器外,還可以作為一個單純的數據處理的工具。使用SQLite 可以很容易地將應用程式所使用的數據結構轉化為表,並保存在一個內在資料庫中。通過sql語句操作資料庫 ...
  • 1 --SQLSERVER資料庫表各種同步技術 減少SQLServer中每次的同步數據量 2 3 --說到資料庫,我就不由地想到同步數據,如何儘可能地減少每次的同步數據量,以此來提高同步效率,降低對網路帶寬的消耗是我們使用者所關心的。對於大批量的數據同步,這一點是應引起重視的。獲取差異數據是解決這個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...