婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 實現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蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美精品久久久久久久久老牛影院| 欧美一区欧美二区| 99在线精品免费| 精品美女在线播放| 日韩精品乱码av一区二区| 欧美综合视频在线观看| 亚洲欧美视频在线观看视频| 91浏览器打开| 亚洲影视在线播放| 欧美日韩激情一区| 美女在线一区二区| 久久精品人人爽人人爽| 成人一区在线看| 亚洲综合久久久久| 欧美一区二区三级| 国产一区欧美一区| 亚洲三级免费观看| 51久久夜色精品国产麻豆| 美女高潮久久久| 国产精品天干天干在线综合| 日本韩国一区二区三区视频| 午夜久久电影网| 国产亚洲一区二区三区在线观看| 91在线国内视频| 日本美女视频一区二区| 国产精品日韩成人| 91精品免费在线观看| 福利一区福利二区| 午夜欧美一区二区三区在线播放| 久久天堂av综合合色蜜桃网| 色菇凉天天综合网| 国产米奇在线777精品观看| 亚洲欧美乱综合| 精品久久久三级丝袜| 91成人在线免费观看| 韩国一区二区三区| 一区二区三区 在线观看视频| 日韩午夜激情av| 91福利视频网站| 国产精品一区二区在线观看网站| 亚洲观看高清完整版在线观看| 久久综合久色欧美综合狠狠| 欧美色手机在线观看| 粉嫩av一区二区三区在线播放 | 亚洲午夜三级在线| 久久蜜臀精品av| 91精品国产麻豆| 91福利在线播放| 国产激情91久久精品导航 | 欧美怡红院视频| 成人激情av网| 精品亚洲国产成人av制服丝袜| 亚洲电影一级黄| 亚洲免费在线播放| 国产精品久99| 国产精品全国免费观看高清| 久久久蜜桃精品| 日韩你懂的电影在线观看| 欧美揉bbbbb揉bbbbb| 91黄色小视频| 91精彩视频在线观看| 91在线视频免费观看| 成人99免费视频| 粉嫩av亚洲一区二区图片| 国产精品亚洲第一区在线暖暖韩国 | 亚洲国产日韩综合久久精品| 亚洲欧洲日产国产综合网| 久久精品男人的天堂| 久久九九久久九九| 国产亚洲欧美中文| 欧美激情一区二区三区不卡| 国产精品理论在线观看| 亚洲女子a中天字幕| 一区二区三区丝袜| 亚洲成人免费电影| 天使萌一区二区三区免费观看| 亚洲国产一区二区三区| 欧美a级理论片| 国产美女一区二区三区| 成人动漫中文字幕| 欧美影视一区二区三区| 日韩欧美一卡二卡| 国产欧美一区二区精品久导航| 中文字幕在线视频一区| 亚洲午夜羞羞片| 日韩av中文字幕一区二区| 美女视频网站黄色亚洲| 岛国精品在线播放| 欧美午夜理伦三级在线观看| 91精品国产黑色紧身裤美女| 国产亚洲欧美日韩俺去了| 亚洲欧美日韩在线不卡| 日本成人在线一区| 成人中文字幕在线| 欧美美女一区二区| 日本一区二区三区电影| 亚洲国产精品一区二区久久恐怖片| 久久99久国产精品黄毛片色诱| 成人av资源网站| 日韩一本二本av| 亚洲天天做日日做天天谢日日欢 | 国产一区二区视频在线| www.66久久| 日韩一卡二卡三卡| 亚洲精品国产无套在线观| 韩日欧美一区二区三区| 欧美日韩国产综合视频在线观看| 精品久久久久99| 亚洲综合在线第一页| 国产精一品亚洲二区在线视频| 欧美吞精做爰啪啪高潮| 国产精品欧美综合在线| 男人的天堂亚洲一区| 色综合久久久久久久| 久久精品一区蜜桃臀影院| 五月婷婷久久丁香| 91在线视频网址| 欧美国产精品一区二区| 久久国产剧场电影| 91精品一区二区三区久久久久久| 伊人夜夜躁av伊人久久| 成人av高清在线| 久久久久久亚洲综合| 久久精品国产澳门| 欧美精品久久天天躁| 亚洲男帅同性gay1069| 成人毛片老司机大片| 久久九九久精品国产免费直播| 久久97超碰色| 精品欧美乱码久久久久久1区2区| 水野朝阳av一区二区三区| 欧美性三三影院| 亚洲成人777| 欧美精品在线一区二区| 天天av天天翘天天综合网色鬼国产 | 国产不卡免费视频| 欧美精品一区二区在线观看| 久久91精品久久久久久秒播| 精品国产成人在线影院| 麻豆91在线观看| 精品久久久久一区| 国产91精品免费| 国产精品免费视频一区| 99久久精品国产一区二区三区| 日韩理论电影院| 欧美区一区二区三区| 奇米一区二区三区av| 精品久久久网站| 丁香婷婷综合五月| 亚洲欧美偷拍三级| 欧美私模裸体表演在线观看| 奇米777欧美一区二区| 国产日韩亚洲欧美综合| 96av麻豆蜜桃一区二区| 一区二区三区欧美日韩| 欧美人与禽zozo性伦| 国内成+人亚洲+欧美+综合在线 | 一本色道久久综合精品竹菊| 亚洲欧美激情视频在线观看一区二区三区| 91免费版pro下载短视频| 亚洲资源在线观看| 这里只有精品免费| 国产精品一区二区在线播放| 中文字幕在线不卡国产视频| 欧美日韩卡一卡二| 国产在线精品国自产拍免费| 国产精品女同一区二区三区| 欧美老人xxxx18| www.视频一区| 日本欧美久久久久免费播放网| 欧美国产欧美综合| 欧美日韩国产美| 国产麻豆一精品一av一免费| 一区二区三国产精华液| 久久在线观看免费| 91久久精品一区二区| 国产精品一区二区x88av| 亚洲一二三四在线观看| 久久免费美女视频| 欧美美女bb生活片| av亚洲精华国产精华精| 狠狠色2019综合网| 天天亚洲美女在线视频| 中文字幕亚洲视频| 日韩精品一区二区三区中文不卡| 色综合天天综合网国产成人综合天| 美女免费视频一区| 亚洲午夜激情网站| 亚洲欧洲精品成人久久奇米网| 精品日韩一区二区三区| 欧美日韩精品一区二区三区 | 欧美三级在线视频| 成人性生交大合| 国产真实乱子伦精品视频| 无码av中文一区二区三区桃花岛| 亚洲视频一区在线| 国产亚洲精品福利| 精品国产髙清在线看国产毛片| 欧美乱妇23p| 精品视频一区三区九区|