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

主頁 > 知識庫 > 實現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實例代碼

實現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實例代碼

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

實現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實例代碼

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

       1.創(chuàng)建表及測試數(shù)據(jù)

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.查詢結(jié)果集

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 

結(jié)果:

2.查詢xml數(shù)據(jù)

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 

結(jié)果:

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數(shù)據(jù)

1)創(chuàng)建輔助函數(shù)

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 
  ) 
) 

結(jié)果:

[ {"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"}]}]}] 

總結(jié):

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

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

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

標(biāo)簽:宿州 防疫戰(zhàn)設(shè) 天水 益陽 威海 七臺河 來賓 銅仁

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《實現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實例代碼》,本文關(guān)鍵詞  實現(xiàn),SQL,Server,原生,數(shù),據(jù)從,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《實現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于實現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    视频一区二区三区入口| 久久无码av三级| 成人晚上爱看视频| 国产精品123| 成人午夜视频在线| 国产成+人+日韩+欧美+亚洲| 丁香六月综合激情| 一本到三区不卡视频| 欧美日韩国产首页在线观看| 欧美精品视频www在线观看 | 国产精品123| 不卡av免费在线观看| 91麻豆视频网站| 在线观看免费亚洲| 91麻豆精品国产91久久久久 | 欧美日韩一区二区三区免费看| 在线一区二区三区四区| 欧美日韩免费电影| 精品美女一区二区| 国产精品久久久99| 亚洲一区电影777| 亚洲成av人影院在线观看网| 蜜臀av性久久久久蜜臀av麻豆| 久久99国产精品免费| 成人午夜视频免费看| 欧美在线|欧美| 亚洲精品一区二区三区在线观看| 欧美国产日本视频| 亚洲一区二区三区在线看| 日韩高清不卡一区二区| 国产精品资源站在线| 在线看一区二区| 精品精品国产高清a毛片牛牛 | 国产精品免费网站在线观看| 亚洲理论在线观看| 日韩精品福利网| 91尤物视频在线观看| 日韩一区二区精品在线观看| 国产精品久久久久一区| 日韩电影在线免费看| 99久久综合国产精品| 欧美一区二区三区公司| 亚洲视频图片小说| 久久99精品网久久| 欧美主播一区二区三区| 国产精品久久久久7777按摩| 美女视频黄免费的久久 | 老司机免费视频一区二区三区| 国产成人激情av| 欧美一区二区视频在线观看| 一区二区三区成人| 99九九99九九九视频精品| 欧美精品一区二区三区高清aⅴ | 日韩高清不卡一区| 91高清在线观看| 中文字幕亚洲区| jlzzjlzz欧美大全| 久久久亚洲精品石原莉奈| 蜜臀av国产精品久久久久| 欧美日韩激情在线| 亚洲线精品一区二区三区| 91啪九色porn原创视频在线观看| 国产午夜精品久久久久久免费视| 免费在线观看一区| 日韩欧美中文字幕精品| 日韩va亚洲va欧美va久久| 欧美巨大另类极品videosbest| 一区二区在线观看免费视频播放| 不卡的看片网站| 中文字幕一区二区在线播放| 99久久免费视频.com| 最新久久zyz资源站| 不卡电影一区二区三区| 国产精品九色蝌蚪自拍| 96av麻豆蜜桃一区二区| 亚洲精品国产无套在线观| 国产精品18久久久久久久久久久久 | 亚洲免费观看在线观看| 成人影视亚洲图片在线| 一区在线观看免费| 99国产精品久久久久久久久久久| 国产精品久久久久婷婷二区次| 成人黄色软件下载| 亚洲欧美国产77777| 欧日韩精品视频| 免费精品视频最新在线| 精品久久久久99| 成人av资源在线| 亚洲自拍偷拍麻豆| 欧美一级在线视频| 国产夫妻精品视频| 亚洲精品视频免费看| 91精品国产综合久久精品app| 青青青爽久久午夜综合久久午夜| 精品国产人成亚洲区| 成人高清视频在线观看| 亚洲成人自拍偷拍| 精品日产卡一卡二卡麻豆| 成人在线视频首页| 日韩黄色免费电影| 中文字幕一区二区视频| 欧美精品亚洲一区二区在线播放| 久88久久88久久久| 亚洲婷婷综合色高清在线| 欧美一区二区三区精品| av亚洲精华国产精华精华 | 日本一区二区三区在线不卡| 91啪九色porn原创视频在线观看| 琪琪一区二区三区| 国产欧美日韩激情| 69堂亚洲精品首页| 91视频免费看| 国产成人精品三级| 免费成人美女在线观看| **性色生活片久久毛片| 久久久噜噜噜久噜久久综合| 在线观看国产一区二区| 成熟亚洲日本毛茸茸凸凹| 视频在线观看一区| 一区二区三区四区国产精品| 久久久高清一区二区三区| 555www色欧美视频| 91社区在线播放| 成人美女视频在线看| 久久福利视频一区二区| 亚洲国产日韩av| 综合久久久久久| 国产欧美一区二区三区沐欲| 欧美电视剧免费全集观看| 欧美日韩欧美一区二区| 日本道精品一区二区三区| 成a人片国产精品| 成人高清免费观看| 国产成人精品免费在线| 国产福利一区二区三区视频在线 | 高清成人免费视频| 国产麻豆精品theporn| 裸体在线国模精品偷拍| 日韩av电影一区| 日产国产高清一区二区三区| 亚洲国产乱码最新视频 | 六月婷婷色综合| 日韩国产精品91| 日韩成人精品在线观看| 日韩不卡免费视频| 日本视频中文字幕一区二区三区| 一区二区三区在线免费视频| 一区二区视频在线看| 亚洲精品欧美综合四区| 亚洲一区在线视频| 亚洲第一成人在线| 轻轻草成人在线| 激情欧美一区二区| 福利一区二区在线观看| 不卡一区二区在线| 日本韩国欧美在线| 欧美视频日韩视频| 91精品福利在线一区二区三区| 6080午夜不卡| 久久久亚洲精品石原莉奈| 国产精品美女视频| 亚洲黄色av一区| 免费高清在线视频一区·| 国产精品一区2区| 91麻豆自制传媒国产之光| 欧美日韩免费在线视频| 欧美电视剧在线看免费| 国产精品久久久久7777按摩| 亚洲已满18点击进入久久| 美女任你摸久久| 成人黄色一级视频| 欧美日韩久久久久久| 精品美女在线观看| 亚洲精品高清视频在线观看| 亚洲电影视频在线| 国产麻豆一精品一av一免费| av激情综合网| 欧美一区二区在线播放| 国产精品乱码人人做人人爱 | 日韩黄色小视频| 国产精品亚洲第一 | 国产尤物一区二区| 99这里只有精品| 精品日韩欧美一区二区| 亚洲精品亚洲人成人网| 精品一区在线看| 91毛片在线观看| 国产亚洲va综合人人澡精品| 亚洲一区二区高清| 丁香五精品蜜臀久久久久99网站 | 久久久久亚洲蜜桃| 亚洲电影视频在线| 不卡影院免费观看| 亚洲精品在线观看网站| 一级中文字幕一区二区| 成人免费精品视频| 精品国一区二区三区| 亚洲图片一区二区| 色综合天天做天天爱| 欧美激情一区二区在线|