亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 實現SQL Server 原生數據從XML生成JSON數據的實例代碼

實現SQL Server 原生數據從XML生成JSON數據的實例代碼

熱門標簽:怎樣在地圖上標注路線圖標 千呼電銷機器人價格 智能語音外呼系統選哪家 奧威地圖標注多個地方 外呼系統電銷專用 優質地圖標注 京華物流公司地圖標注 武漢長沙外呼系統方法和技巧 百度地圖標注不同路線

實現SQL Server 原生數據從XML生成JSON數據的實例代碼

   SQL Server 是關系數據庫,查詢結果通常都是數據集,但是在一些特殊需求下,我們需要XML數據,最近這些年,JSON作為WebAPI常用的交換數據格式,那么數據庫如何生成JSON數據呢?今天就寫了一個DEMO.

       1.創建表及測試數據

SET NOCOUNT ON 
 
IF OBJECT_ID('STATS') IS NOT NULL DROP TABLE STATS 
IF OBJECT_ID('STATIONS') IS NOT NULL DROP TABLE STATIONS 
IF OBJECT_ID('OPERATORS') IS NOT NULL DROP TABLE OPERATORS 
IF OBJECT_ID('REVIEWS') IS NOT NULL DROP TABLE REVIEWS 
 
-- Create and populate table with Station 
CREATE TABLE STATIONS(ID INTEGER PRIMARY KEY, CITY NVARCHAR(20), STATE CHAR(2), LAT_N REAL, LONG_W REAL); 
INSERT INTO STATIONS VALUES (13, 'Phoenix', 'AZ', 33, 112); 
INSERT INTO STATIONS VALUES (44, 'Denver', 'CO', 40, 105); 
INSERT INTO STATIONS VALUES (66, 'Caribou', 'ME', 47, 68); 
 
-- Create and populate table with Operators 
CREATE TABLE OPERATORS(ID INTEGER PRIMARY KEY, NAME NVARCHAR(20), SURNAME NVARCHAR(20)); 
INSERT INTO OPERATORS VALUES (50, 'John "The Fox"', 'Brown'); 
INSERT INTO OPERATORS VALUES (51, 'Paul', 'Smith'); 
INSERT INTO OPERATORS VALUES (52, 'Michael', 'Williams');  
 
-- Create and populate table with normalized temperature and precipitation data 
CREATE TABLE STATS ( 
    STATION_ID INTEGER REFERENCES STATIONS(ID), 
    MONTH INTEGER CHECK (MONTH BETWEEN 1 AND 12), 
    TEMP_F REAL CHECK (TEMP_F BETWEEN -80 AND 150), 
    RAIN_I REAL CHECK (RAIN_I BETWEEN 0 AND 100), PRIMARY KEY (STATION_ID, MONTH)); 
INSERT INTO STATS VALUES (13, 1, 57.4, 0.31); 
INSERT INTO STATS VALUES (13, 7, 91.7, 5.15); 
INSERT INTO STATS VALUES (44, 1, 27.3, 0.18); 
INSERT INTO STATS VALUES (44, 7, 74.8, 2.11); 
INSERT INTO STATS VALUES (66, 1, 6.7, 2.10); 
INSERT INTO STATS VALUES (66, 7, 65.8, 4.52); 
 
-- Create and populate table with Review 
CREATE TABLE REVIEWS(STATION_ID INTEGER,STAT_MONTH INTEGER,OPERATOR_ID INTEGER)  
insert into REVIEWS VALUES (13,1,50) 
insert into REVIEWS VALUES (13,7,50) 
insert into REVIEWS VALUES (44,7,51) 
insert into REVIEWS VALUES (44,7,52) 
insert into REVIEWS VALUES (44,7,50) 
insert into REVIEWS VALUES (66,1,51) 
insert into REVIEWS VALUES (66,7,51) 

2.查詢結果集

select   STATIONS.ID    as ID, 
      STATIONS.CITY   as City, 
      STATIONS.STATE  as State, 
      STATIONS.LAT_N  as LatN, 
      STATIONS.LONG_W  as LongW, 
      STATS.MONTH    as Month, 
      STATS.RAIN_I   as Rain, 
      STATS.TEMP_F   as Temp, 
    OPERATORS.NAME  as Name, 
    OPERATORS.SURNAME as Surname 
from    stations  
inner join stats   on stats.STATION_ID=STATIONS.ID  
left join reviews  on reviews.STATION_ID=stations.id  
           and reviews.STAT_MONTH=STATS.[MONTH] 
left join OPERATORS on OPERATORS.ID=reviews.OPERATOR_ID 

結果:

2.查詢xml數據

select stations.*, 
    (select stats.*,  
        (select OPERATORS.*  
        from  OPERATORS  
        inner join reviews on OPERATORS.ID=reviews.OPERATOR_ID  
        where reviews.STATION_ID=STATS.STATION_ID  
        and  reviews.STAT_MONTH=STATS.MONTH  
        for xml path('operator'),type 
        ) operators 
    from STATS  
    where STATS.STATION_ID=stations.ID  
    for xml path('stat'),type 
    ) stats  
from  stations  
for  xml path('station'),type 

結果:

station> 
 ID>13/ID> 
 CITY>Phoenix/CITY> 
 STATE>AZ/STATE> 
 LAT_N>3.3000000e+001/LAT_N> 
 LONG_W>1.1200000e+002/LONG_W> 
 stats> 
  stat> 
   STATION_ID>13/STATION_ID> 
   MONTH>1/MONTH> 
   TEMP_F>5.7400002e+001/TEMP_F> 
   RAIN_I>3.1000000e-001/RAIN_I> 
   operators> 
    operator> 
     ID>50/ID> 
     NAME>John "The Fox"/NAME> 
     SURNAME>Brown/SURNAME> 
    /operator> 
   /operators> 
  /stat> 
  stat> 
   STATION_ID>13/STATION_ID> 
   MONTH>7/MONTH> 
   TEMP_F>9.1699997e+001/TEMP_F> 
   RAIN_I>5.1500001e+000/RAIN_I> 
   operators> 
    operator> 
     ID>50/ID> 
     NAME>John "The Fox"/NAME> 
     SURNAME>Brown/SURNAME> 
    /operator> 
   /operators> 
  /stat> 
 /stats> 
/station> 
station> 
 ID>44/ID> 
 CITY>Denver/CITY> 
 STATE>CO/STATE> 
 LAT_N>4.0000000e+001/LAT_N> 
 LONG_W>1.0500000e+002/LONG_W> 
 stats> 
  stat> 
   STATION_ID>44/STATION_ID> 
   MONTH>1/MONTH> 
   TEMP_F>2.7299999e+001/TEMP_F> 
   RAIN_I>1.8000001e-001/RAIN_I> 
  /stat> 
  stat> 
   STATION_ID>44/STATION_ID> 
   MONTH>7/MONTH> 
   TEMP_F>7.4800003e+001/TEMP_F> 
   RAIN_I>2.1099999e+000/RAIN_I> 
   operators> 
    operator> 
     ID>51/ID> 
     NAME>Paul/NAME> 
     SURNAME>Smith/SURNAME> 
    /operator> 
    operator> 
     ID>52/ID> 
     NAME>Michael/NAME> 
     SURNAME>Williams/SURNAME> 
    /operator> 
    operator> 
     ID>50/ID> 
     NAME>John "The Fox"/NAME> 
     SURNAME>Brown/SURNAME> 
    /operator> 
   /operators> 
  /stat> 
 /stats> 
/station> 
station> 
 ID>66/ID> 
 CITY>Caribou/CITY> 
 STATE>ME/STATE> 
 LAT_N>4.7000000e+001/LAT_N> 
 LONG_W>6.8000000e+001/LONG_W> 
 stats> 
  stat> 
   STATION_ID>66/STATION_ID> 
   MONTH>1/MONTH> 
   TEMP_F>6.6999998e+000/TEMP_F> 
   RAIN_I>2.0999999e+000/RAIN_I> 
   operators> 
    operator> 
     ID>51/ID> 
     NAME>Paul/NAME> 
     SURNAME>Smith/SURNAME> 
    /operator> 
   /operators> 
  /stat> 
  stat> 
   STATION_ID>66/STATION_ID> 
   MONTH>7/MONTH> 
   TEMP_F>6.5800003e+001/TEMP_F> 
   RAIN_I>4.5200000e+000/RAIN_I> 
   operators> 
    operator> 
     ID>51/ID> 
     NAME>Paul/NAME> 
     SURNAME>Smith/SURNAME> 
    /operator> 
   /operators> 
  /stat> 
 /stats> 
/station> 

3.如何生成JSON數據

1)創建輔助函數

CREATE FUNCTION [dbo].[qfn_XmlToJson](@XmlData xml) 
RETURNS nvarchar(max) 
AS 
BEGIN 
 declare @m nvarchar(max) 
 SELECT @m='['+Stuff 
 ( 
   (SELECT theline from 
  (SELECT ','+' {'+Stuff 
    ( 
       (SELECT ',"'+coalesce(b.c.value('local-name(.)', 'NVARCHAR(255)'),'')+'":'+ 
           case when b.c.value('count(*)','int')=0  
           then dbo.[qfn_JsonEscape](b.c.value('text()[1]','NVARCHAR(MAX)')) 
           else dbo.qfn_XmlToJson(b.c.query('*')) 
           end 
         from x.a.nodes('*') b(c)                                 
         for xml path(''),TYPE).value('(./text())[1]','NVARCHAR(MAX)') 
        ,1,1,'')+'}' 
     from @XmlData.nodes('/*') x(a) 
    ) JSON(theLine) 
    for xml path(''),TYPE).value('.','NVARCHAR(MAX)') 
   ,1,1,'')+']' 
  return @m 
END 

CREATE FUNCTION [dbo].[qfn_JsonEscape](@value nvarchar(max) ) 
returns nvarchar(max) 
as begin 
  
 if (@value is null) return 'null' 
 if (TRY_PARSE( @value as float) is not null) return @value 
 
 set @value=replace(@value,'\','\') 
 set @value=replace(@value,'"','\"') 
 
 return '"'+@value+'"' 
end 

3)查詢sql

select dbo.qfn_XmlToJson 
( 
 ( 
  select stations.ID,stations.CITY,stations.STATE,stations.LAT_N,stations.LONG_W , 
     (select stats.*,  
          (select OPERATORS.*  
          from  OPERATORS inner join reviews  
          on   OPERATORS.ID=reviews.OPERATOR_ID 
          where reviews.STATION_ID=STATS.STATION_ID  
          and  reviews.STAT_MONTH=STATS.MONTH  
          for xml path('operator'),type 
          ) operators 
      from STATS  
      where STATS.STATION_ID=stations.ID for xml path('stat'),type 
     ) stats  
   from stations for xml path('stations'),type 
  ) 
) 

結果:

[ {"ID":13,"CITY":"Phoenix","STATE":"AZ","LAT_N":3.3000000e+001,"LONG_W"
:1.1200000e+002,"stats":[ {"STATION_ID":13,"MONTH":1,"TEMP_F":5.7400002e+001,"
RAIN_I":3.1000000e-001,"operators":[ {"ID":50,"NAME":"John \"The Fox\"","SURNAME":"Brown"}]},
 {"STATION_ID":13,"MONTH":7,"TEMP_F":9.1699997e+001,"RAIN_I":5.1500001e+000,"operators":
[ {"ID":50,"NAME":"John \"The Fox\"","SURNAME":"Brown"}]}]}, {"ID":44,"CITY":"Denver",
"STATE":"CO","LAT_N":4.0000000e+001,"LONG_W":1.0500000e+002,"stats":[ {"STATION_ID":44,
"MONTH":1,"TEMP_F":2.7299999e+001,"RAIN_I":1.8000001e-001}, {"STATION_ID":44,"MONTH":7,
"TEMP_F":7.4800003e+001,"RAIN_I":2.1099999e+000,"operators":[ {"ID":51,"NAME":"Paul",
"SURNAME":"Smith"}, {"ID":52,"NAME":"Michael","SURNAME":"Williams"}, {"ID":50,"NAME"
:"John \"The Fox\"","SURNAME":"Brown"}]}]}, {"ID":66,"CITY":"Caribou","STATE":"ME","LAT_N":
4.7000000e+001,"LONG_W":6.8000000e+001,"stats":[ {"STATION_ID":66,"MONTH":1,"TEMP
_F":6.6999998e+000,"RAIN_I":2.0999999e+000,"operators":[ {"ID":51,"NAME":"Paul","
SURNAME":"Smith"}]}, {"STATION_ID":66,"MONTH":7,"TEMP_F":6.5800003e+001,"RAIN_I":
4.5200000e+000,"operators":[ {"ID":51,"NAME":"Paul","SURNAME":"Smith"}]}]}] 

總結:

JSON作為靈活的Web通信交換架構,如果把配置數據存放在數據庫中,直接獲取JSON,那配置就會非常簡單了,也能夠大量減輕應用服務器的壓力!

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • SQL SERVER 將XML變量轉為JSON文本
  • SQL Server中將數據導出為XML和Json方法分享
  • 在SQL Server中將數據導出為XML和Json的方法
  • php 備份數據庫代碼(生成word,excel,json,xml,sql)
  • SqlServer將查詢結果轉換為XML和JSON

標簽:宿州 防疫戰設 天水 益陽 威海 七臺河 來賓 銅仁

巨人網絡通訊聲明:本文標題《實現SQL Server 原生數據從XML生成JSON數據的實例代碼》,本文關鍵詞  實現,SQL,Server,原生,數,據從,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《實現SQL Server 原生數據從XML生成JSON數據的實例代碼》相關的同類信息!
  • 本頁收集關于實現SQL Server 原生數據從XML生成JSON數據的實例代碼的相關信息資訊供網民參考!
  • 推薦文章
    一级毛片看真人在线视频| 精品国产亚洲一区二区三区| 欧美激情一区二区三区视频| 国产激情一区二区三区| 你懂的福利视频| 日韩免费在线观看视频| 国产一区二区精品久久91| 日韩专区一区| 美女免费精品高清毛片在线视 | 亚洲第一页色| 日本免费看视频| 国产精品自拍一区| 黄色福利片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久99中文字幕| 中文字幕一区二区三区 精品| 午夜激情视频在线播放| 国产精品自拍一区| 国产一区二区精品久久91| 天天做日日干| 二级片在线观看| 国产不卡高清| 精品视频一区二区三区免费| 999精品视频在线| 欧美激情在线精品video| 香蕉视频久久| 国产一区二区精品| 一本伊大人香蕉高清在线观看| 日韩欧美一及在线播放| 可以在线看黄的网站| 国产视频一区二区在线播放| 日韩在线观看视频免费| 日韩专区一区| 欧美日本免费| 亚洲爆爽| 日韩免费片| 香蕉视频三级| 黄色免费网站在线| 韩国三级香港三级日本三级la| 国产麻豆精品hdvideoss| 99久久精品费精品国产一区二区| 久久精品免视看国产成人2021| 韩国三级香港三级日本三级la| 二级特黄绝大片免费视频大片| 高清一级淫片a级中文字幕| 精品国产香蕉伊思人在线又爽又黄| 色综合久久天天综合| 国产一区二区高清视频| 成人在免费观看视频国产| 久久精品大片| 日日日夜夜操| 日本在线www| 日韩综合| 99久久精品国产免费| 欧美国产日韩一区二区三区| 日韩av片免费播放| 精品视频在线观看视频免费视频| 欧美电影免费看大全| 黄视频网站免费看| 国产91精品一区| 免费的黄视频| 久久国产精品只做精品| 成人高清视频免费观看| 九九精品在线| 久久福利影视| 香蕉视频三级| 国产精品1024永久免费视频| 国产视频久久久久| 午夜家庭影院| 日本特黄一级| 欧美激情一区二区三区在线 | 国产不卡高清| 四虎精品在线观看| 91麻豆精品国产片在线观看| 成人免费高清视频| 国产成人精品综合| 日本特黄一级| 日韩一级精品视频在线观看| 精品在线观看一区| 亚洲 激情| 黄视频网站免费| 午夜久久网| 毛片成人永久免费视频| 日韩专区在线播放| 成人免费高清视频| 久久精品欧美一区二区| 国产一区二区精品尤物| 中文字幕97| 欧美大片aaaa一级毛片| 久久国产一区二区| 美国一区二区三区| 可以在线看黄的网站| 国产原创中文字幕| 欧美激情一区二区三区在线播放 | 日韩一级黄色| 国产亚洲男人的天堂在线观看| 日韩在线观看视频黄| 亚洲女人国产香蕉久久精品| 国产精品自拍在线| 欧美日本免费| 韩国毛片基地| 九九久久99| 国产伦精品一区二区三区无广告 | 亚洲第一页乱| 麻豆污视频| 四虎影视精品永久免费网站 | 精品国产一区二区三区国产馆| 黄视频网站在线看| 国产美女在线一区二区三区| 日韩一级精品视频在线观看| 韩国三级香港三级日本三级| 成人免费网站视频ww| 午夜在线亚洲| 在线观看成人网| 成人a大片高清在线观看| 日韩中文字幕一区| 亚洲www美色| 韩国妈妈的朋友在线播放| 成人影院久久久久久影院| 国产综合91天堂亚洲国产| 日本特黄特色aa大片免费| 国产伦精品一区二区三区在线观看| 欧美激情一区二区三区中文字幕| 亚洲爆爽| a级精品九九九大片免费看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美激情一区二区三区视频 | 韩国妈妈的朋友在线播放| 台湾毛片| 国产视频久久久久| 日本在线不卡视频| 国产精品免费精品自在线观看| 天堂网中文字幕| 成人高清护士在线播放| 国产激情一区二区三区| 九九热国产视频| 一级女性全黄生活片免费| 国产一级生活片| 日本特黄特黄aaaaa大片| 久久国产精品自线拍免费| 天天色成人| 国产极品精频在线观看| 黄视频网站免费看| 日韩专区第一页| 欧美电影免费看大全| 亚洲精品久久久中文字| 日韩av东京社区男人的天堂| 欧美一区二区三区在线观看| 韩国三级视频在线观看| 欧美18性精品| 国产不卡精品一区二区三区| 精品国产亚一区二区三区| 黄色短视频网站| 高清一级淫片a级中文字幕| 国产伦久视频免费观看 视频| 99久久视频| 四虎影视库国产精品一区| 精品国产香蕉在线播出| 日韩专区在线播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 青青青草影院 | 国产国语在线播放视频| 欧美激情一区二区三区视频| 亚洲 欧美 91| 国产综合91天堂亚洲国产| 九九九国产| 国产原创中文字幕| 国产一区二区精品| 999久久久免费精品国产牛牛| 高清一级做a爱过程不卡视频| 久久精品人人做人人爽97| 九九精品在线| 99久久精品国产国产毛片| 99色视频| 一级女性全黄生活片免费| 韩国三级视频在线观看| 欧美激情一区二区三区视频高清| 欧美激情一区二区三区在线| 久久久久久久久综合影视网| 一本伊大人香蕉高清在线观看| 黄色免费三级| 高清一级毛片一本到免费观看| 国产高清在线精品一区二区| 色综合久久天天综合绕观看| 精品国产一区二区三区久 | 尤物视频网站在线观看| 你懂的福利视频| 国产美女在线观看| 国产a毛片| 国产视频一区在线| 日韩一级黄色大片| 一级女人毛片人一女人| 亚飞与亚基在线观看| 久久久久久久免费视频| 欧美电影免费| 午夜欧美福利| 日韩一级精品视频在线观看| 九九久久国产精品| 久久久成人网| 免费毛片基地|