欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 實現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數據的實例代碼的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    久久精品在线观看视频| 欧美一区三区二区| 国产色91在线| 国内一区二区在线| 法国伦理少妇愉情| 欧美刺激脚交jootjob| 五月天亚洲婷婷| xxxxxx黄色| 欧美一区二区二区| 日韩 欧美一区二区三区| 日本69式三人交| 91精品国产综合久久久蜜臀粉嫩 | 亚洲区小说区图片区qvod| 国产成人在线电影| 四虎永久免费在线| 国产精品美女久久久久久久| 成人午夜视频网站| 希岛爱理中文字幕| 亚洲人成网站在线| 丰满少妇中文字幕| 欧美老女人在线| 日韩国产欧美在线视频| 极品粉嫩小仙女高潮喷水久久| 日韩欧美中文一区| 韩国一区二区三区| 国语对白在线播放| 悠悠色在线精品| 喷水视频在线观看| 精品国产99国产精品| 国产精品白丝jk黑袜喷水| 国产精品国产三级国产传播| 日韩伦理av电影| 欧美视频在线观看一区二区| 欧美午夜不卡在线观看免费| 日韩一卡二卡三卡国产欧美| 亚洲欧洲一区二区三区| 午夜视频在线观看一区| 国产在线视频一区二区| 国产精品久久久久野外| 一区二区不卡免费视频| 国内偷拍精品视频| 精品久久久久av影院| 一区二区中文字幕在线| 精品一区二区三区影院在线午夜| 99国产精品国产精品久久| 国产精品久久免费观看| 99久精品国产| 久久久久亚洲av无码网站| 91精彩视频在线| 国产欧美一区二区精品仙草咪| 亚洲国产精品久久人人爱| 亚洲国产精品视频| 欧美aaaaaa午夜精品| hitomi一区二区三区精品| www中文在线| 亚洲欧美日韩综合aⅴ视频| 免费中文字幕av| 国产精品99久久久久久有的能看 | 亚洲精品视频在线看| 亚洲欧美日韩偷拍| 久久久久九九视频| 巨乳女教师的诱惑| 精品sm捆绑视频| 91麻豆福利精品推荐| 欧美成人在线直播| 菠萝蜜视频在线观看一区| 日韩一级大片在线| 成人av高清在线| 欧美成人在线直播| 99久久99精品久久久久久| 亚洲精品一区在线观看| 91网站最新网址| 久久久99精品久久| youjizz.com日本| 国产午夜精品一区二区三区嫩草| av漫画在线观看| 中文一区二区在线观看| a视频免费观看| 一区二区三区免费看视频| 日本高清黄色片| 亚洲小少妇裸体bbw| 一本一本久久a久久| 欧美伊人久久久久久久久影院| 精品在线播放午夜| 欧美日韩视频第一区| 国产精品一区二区黑丝| 欧美一区二区三区在线| 99精品国产99久久久久久白柏 | 日韩亚洲欧美一区二区三区| 不卡的av电影在线观看| xf在线a精品一区二区视频网站| 中文字幕人妻熟女人妻a片| 人妻互换一二三区激情视频| 国产日韩欧美在线一区| 91免费精品国自产拍在线不卡 | 国产又爽又黄无码无遮挡在线观看| 国产精品麻豆一区二区| 在线不卡av电影| 亚洲高清不卡在线观看| 午夜69成人做爰视频| 国产在线视视频有精品| 日韩欧美国产综合| 韩国三级视频在线观看| 日韩毛片一二三区| 强制高潮抽搐sm调教高h| 九九热在线视频观看这里只有精品| 欧美日韩一区二区电影| 99久久国产综合精品色伊| 中文字幕+乱码+中文字幕一区| 老头老太做爰xxx视频| 男人的j进女人的j一区| 91精品啪在线观看国产60岁| 一区二区三区人妻| 亚洲精品成人精品456| 美国黄色小视频| 成人免费高清在线观看| 国产拍欧美日韩视频二区| 免费高清不卡av| 91精品国产综合久久婷婷香蕉| 欧洲熟妇的性久久久久久| 一级精品视频在线观看宜春院| 色狠狠一区二区| 99精品久久久久久| 亚洲欧美日韩国产另类专区| 色丁香久综合在线久综合在线观看| www.日韩大片| 亚洲久草在线视频| 91九色最新地址| 韩国三级丰满少妇高潮| 亚洲一区二区视频| 欧美日韩成人综合| 插我舔内射18免费视频| 五月激情丁香一区二区三区| 91精品在线免费观看| 青青草视频播放| 日本麻豆一区二区三区视频| 欧美sm极限捆绑bd| 亚洲精品成人av久久| 国产精品18久久久久久久网站| 国产精品入口麻豆九色| 色综合视频在线观看| a级大片免费看| 香蕉加勒比综合久久| 日韩一级高清毛片| 鲁丝一区二区三区| 国产激情精品久久久第一区二区 | 中文字幕av网址| 欧美人与禽zozo性伦| 美女黄色一级视频| 国产经典欧美精品| 日韩国产欧美在线播放| 久久欧美一区二区| 欧美亚洲综合久久| 久久久久亚洲av成人网人人软件| 亚洲mv在线观看| 国产精品久久久久久户外露出| 日韩精品专区在线| 中文字幕人妻一区二| 国产伦精品一区三区精东| 精品一二三四区| 高清成人在线观看| 欧美激情一区三区| 真实国产乱子伦对白在线| 日韩大尺度视频| 美国精品在线观看| 国产精品麻豆99久久久久久| 日本道在线观看一区二区| 成熟妇人a片免费看网站| 精品夜夜嗨av一区二区三区| 中文字幕色av一区二区三区| 欧美美女一区二区在线观看| 欧洲美一区二区三区亚洲| 福利一区在线观看| 亚洲国产精品视频| 久久久久久亚洲综合影院红桃| 日本精品视频一区二区| 男男做爰猛烈叫床爽爽小说| 国产一区二区三区高清播放| 一区二区三区在线视频观看| 欧美大片免费久久精品三p| 国产97免费视频| 在线视频 日韩| 国产91丝袜在线18| 欧美影视一区在线| 97超碰在线资源| eeuss鲁片一区二区三区| 日韩国产在线一| 中文字幕一区二区三区不卡在线| 91精品一区二区三区在线观看| 天海翼在线视频| 超碰男人的天堂| eeuss鲁片一区二区三区| 美日韩一区二区| 亚洲精品免费在线| 久久久久亚洲蜜桃| 欧美性色欧美a在线播放| 一级在线观看视频| 成人在线视频免费播放| 成人精品视频一区二区三区尤物| 青娱乐精品在线视频|