共計(jì) 2118 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
這篇文章主要介紹“sql server2016 里面的 json 功能怎么使用”,在日常操作中,相信很多人在 sql server2016 里面的 json 功能怎么使用問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”sql server2016 里面的 json 功能怎么使用”的疑惑有所幫助!接下來,請(qǐng)跟著丸趣 TV 小編一起來學(xué)習(xí)吧!
測(cè)試一下基本的,從查詢結(jié)果里面構(gòu)造一個(gè) 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 t1select * from t1 for json auto-- 查詢結(jié)果 ID name Chinese Math----------- -------------------------------------------------- ----------- -----------1 張三 90 802 李四 75 903 王五 68 100--json 格式 [{ID :1, name : 張三 , Chinese :90, Math :80},{ID :2, name : 李四 , Chinese :75, Math :90},{ID :3, name : 王五 , Chinese :68, Math :100}]
這個(gè)是默認(rèn)模式下面使用 json 的查詢結(jié)果。是不是十分清晰
然后我們?cè)俳釉賲枺诙ㄊ沁@樣紙的。假如我們要繼續(xù)搞有層級(jí)關(guān)系的。我們還可以這樣寫。比方說把成績(jī)放在一個(gè)叫 points 的節(jié)點(diǎn)里面,也是可以分層的
select ID, name, Chinese as [Points.Chinese], Math as [Points.Math] from t1 for json path-- 結(jié)果 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}}]
他們的分?jǐn)?shù)就放在了 json 里面的, 被一個(gè) point 包住了。
如果說我要在這個(gè)結(jié)果里面添加一個(gè)頭來包住,當(dāng)然,我可以使用每個(gè)列來個(gè)別名 [root.col] 來實(shí)現(xiàn),然而就有點(diǎn)啰嗦了。所以我們可以使用這個(gè) root 的關(guān)鍵字來添加一個(gè)頂節(jié)點(diǎn)
select ID, name, Chinese as [Points.Chinese], Math as [Points.Math] from t1 for json path,root(root) -- 返回的 json 結(jié)果 {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}}]}
當(dāng)然咯,查詢嘛,錄入數(shù)據(jù)總是難免遇到 null 值,在這方面,for json 是如何處理的呢?我在測(cè)試表添加一條數(shù)據(jù)在來查詢
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 的返回結(jié)果 [{ID :3, name : 王五 , Points.Chinese :68, Points.Math :100},{ID :4, name : 趙六 , Points.Chinese :100}]
auto 模式下,如果是空值,將會(huì)忽略該屬性。這樣的話很容易就每一個(gè)集合返回的屬性數(shù)量都不一來,這樣不好看。所以應(yīng)對(duì)這種情況,我們可以使用 incluede_null_values 關(guān)鍵字,即使是空值,也帶出來
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 的返回結(jié)果 [{ID :3, name : 王五 , Points.Chinese :68, Points.Math :100},{ID :4, name : 趙六 , Points.Chinese :100, Points.Math :null}]
使用了這個(gè)關(guān)鍵字,就可以把空值帶出來,里面的值是 Null 值
到此,關(guān)于“sql server2016 里面的 json 功能怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!