一:解析XML(SQL2005版本开始支持)

declare @pro_xml varchar(max)='<reg><node><pro_id>3</pro_id><pro_sale_num>10</pro_sale_num><server_amount>10.00</server_amount><express_amount>0.00</express_amount></node><node><pro_id>4</pro_id><pro_sale_num>20</pro_sale_num><server_amount>20.00</server_amount><express_amount>30.00</express_amount></node><node><pro_id>7</pro_id><pro_sale_num>30</pro_sale_num><server_amount>30.00</server_amount><express_amount>40.00</express_amount></node></reg>'
declare @xml xml=@pro_xml
select * from (
select t.c.value('(pro_id/text())[1]','int') as pro_id,t.c.value('(pro_sale_num/text())[1]','int') as pro_sale_num,t.c.value('(server_amount/text())[1]','decimal(18,2)') as server_amount,t.c.value('(express_amount/text())[1]','decimal(18,2)') as express_amount
from @xml.nodes('/reg/node') as t(c)
) as T

二.解析JSON(SQL2016版本开始支持)

SqlServer对json的功能主要包含 IsJson, Json_Value, Json_Modify, Json_Query

1: IsJson 解析该字符串是否是合法的json格式

格式:IsJson(@express)

declare @pro_json varchar(max)
set @pro_json='[{"pro_id":3,"pro_sale_num":10,"server_amount":"10.00","express_amount":"5"},{"pro_id":4,"pro_sale_num":15,"server_amount":"15.00","express_amount":"10"},{"pro_id":7,"pro_sale_num":20,"server_amount":"20.00","express_amount":"15"}
]'
select IsJson(@pro_json)

合法返回1,不合法返回0, 如果表达式为 NULL,则返回NULL

2: Json_Value 从Json字符串中提出标量值

格式:Json_Value (value,'$.column') from openjson(@express)

注:include_null_values 表示表达式中为NULL,输出NULL

declare @pro_json varchar(max)
set @pro_json='[{"pro_id":3,"pro_sale_num":10,"server_amount":"10.00","express_amount":"5"},{"pro_id":4,"pro_sale_num":15,"server_amount":"15.00","express_amount":"10"},{"pro_id":7,"pro_sale_num":20,"server_amount":"20.00","express_amount":"15"}
]'
select
JSON_VALUE(value,'$.pro_id') as pro_id,
JSON_VALUE(value,'$.pro_sale_num') as pro_sale_num,
JSON_VALUE(value,'$.server_amount') as server_amount,
JSON_VALUE(value,'$.express_amount') as express_amount
from openjson(@pro_json) include_null_values

3: Json_Query从Json字符串中提取对象或数组

格式:Json_Query(value,'$.object') from openjson(@express)

declare @pro_json varchar(max)
set @pro_json='[{"pro_id":3,"pro_sale_num":[{"sale_id":13,"sale_num":103}],"server_amount":"10.00","express_amount":"5"},{"pro_id":4,"pro_sale_num":[{"sale_id":14,"sale_num":104}],"server_amount":"15.00","express_amount":"10"}
]'
select JSON_VALUE(value,'$.pro_id'),JSON_QUERY(VALUE,'$.pro_sale_num') from openjson(@pro_json)

4: json_Modify 更新Json字符串中的属性值,并返回更新的Json字符串

格式:json_Modify(value,'$.column',newValue) from openjson(@express)

declare @pro_json varchar(max)
set @pro_json=
'[{"pro_id":3,"pro_sale_num":[{"sale_id":13,"sale_num":103}],"server_amount":"10.00","express_amount":"5"},{"pro_id":4,"pro_sale_num":[{"sale_id":14,"sale_num":104}],"server_amount":"15.00","express_amount":"10"}
]'
select JSON_MODIFY(value,'$.pro_id','2') from openjson(@pro_json)

5:多层复杂的Json解析

declare @pro_json varchar(max)
set @pro_json=
'[{"pro_id":3,"pro_sale_num":[{"sale_id":13,"sale_num":103}],"server_amount":"10.00","express_amount":"5"},{"pro_id":4,"pro_sale_num":[{"sale_id":14,"sale_num":104}],"server_amount":"15.00","express_amount":"10"}
]'
select JSON_VALUE(value,'$.pro_id')as pro_id,
JSON_VALUE(value,'$.server_amount') as server_amount,
JSON_VALUE(value,'$.express_amount') as express_amount,
t.sale_id,t.sale_num
from openJson(@pro_json) as a
cross apply
(select JSON_VALUE(value,'$.sale_id')as sale_id,JSON_VALUE(value,'$.sale_num')as sale_num from openJson(Json_Query(value,'$.pro_sale_num')) as b)
as t

6:将Json字符串解析为表对象


DECLARE @JsonStr VARCHAR(max)=
'{"shidu": "33%","pm25": 80.0,"pm10": 127.0,"quality": "轻度污染","wendu": "7","ganmao": "儿童、老年人及心脏、呼吸系统疾病患者人群应减少长时间或高强度户外锻炼","yesterday": {"date": "21","sunrise": "07:49","high": "高温 7.0℃","low": "低温 -5.0℃","sunset": "18:02","aqi": 77.0,"ymd": "2019-01-21","week": "星期一","fx": "西风","fl": "<3级","type": "晴","notice": "愿你拥有比阳光明媚的心情"},"forecast": [{"date": "22","sunrise": "07:49","high": "高温 10.0℃","low": "低温 -5.0℃","sunset": "18:03","aqi": 104.0,"ymd": "2019-01-22","week": "星期二","fx": "西南风","fl": "<3级","type": "晴","notice": "愿你拥有比阳光明媚的心情"},{"date": "23","sunrise": "07:48","high": "高温 9.0℃","low": "低温 -4.0℃","sunset": "18:04","aqi": 184.0,"ymd": "2019-01-23","week": "星期三","fx": "东北风","fl": "3-4级","type": "晴","notice": "愿你拥有比阳光明媚的心情"},{"date": "24","sunrise": "07:48","high": "高温 5.0℃","low": "低温 -3.0℃","sunset": "18:05","aqi": 262.0,"ymd": "2019-01-24","week": "星期四","fx": "南风","fl": "<3级","type": "多云","notice": "阴晴之间,谨防紫外线侵扰"},{"date": "25","sunrise": "07:48","high": "高温 4.0℃","low": "低温 -3.0℃","sunset": "18:06","aqi": 258.0,"ymd": "2019-01-25","week": "星期五","fx": "西风","fl": "<3级","type": "晴","notice": "愿你拥有比阳光明媚的心情"},{"date": "26","sunrise": "07:47","high": "高温 5.0℃","low": "低温 -1.0℃","sunset": "18:07","aqi": 195.0,"ymd": "2019-01-26","week": "星期六","fx": "东北风","fl": "<3级","type": "多云","notice": "阴晴之间,谨防紫外线侵扰"}]}'
SELECT * FROM OPENJSON(@JsonStr) 

SqlServer解析XML,解析JSON数据格式相关推荐

  1. C#合成解析XML与JSON

      http://www.xuanyusong.com/archives/1901  XML与JSON在开发中非常重要, 其实核心就是处理字符串.一个是XML的字符串一个是JSON的字符串,尤其是在处 ...

  2. 安卓学习笔记30:解析XML与JSON

    文章目录 零.学习目标 一.解析XML (一)XML概述 (二)解析XML的方法 二.案例演示 - 读取解析XML (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[ReadPars ...

  3. XML和JSON数据格式对比

    概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

  4. 1.MyBatis源码解析-XML解析流程--阿呆中二

    XML解析流程 MyBatis XML解析流程 与我联系 MyBatis 本文是对mybatis 3.x源码深度解析与最佳实践学习的总结,包括XML文件解析流程.SqlSession构建流程.CRUD ...

  5. JSON解析与XML解析的区别

    JSON与XML的区别比较 1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记 ...

  6. UI进阶——XML解析与Json解析

    一.解析的基本概念 解析数据就是从事先准备好的数据格式中提取数据,常见的数据格式有XML和JSON数据格式.iOS对两种数据格式都提供了解析方式. 二.xml数据结构解析 xml:Extensible ...

  7. 【Android Developers Training】 81. 解析XML数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  8. xml 属性value换行显示_跟光磊学Java开发-Java解析XML

    XML介绍 XML(EXtensible Markup Language)指的是可扩展的标记语言. XML经常被用于框架的配置文件,例如Mybatis,Spring等开源框架都会使用XML作为配置文件 ...

  9. xml解析总结-常用需掌握

    Xml文档的解析 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model, 文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX:Simple ...

  10. delphi解析xml

    delphi解析xml //解析xml (自己做的时候写的,仅供参考) ComXML := LoadXMLData(jmxml); XMLNode := ComXML.DocumentElement; ...

最新文章

  1. ssh 别名登录小技巧
  2. 音乐文件基本格式,wave,mod,midi,mp3,wma,flac
  3. 疾病相关数据查找,Our world in data使用指南
  4. Maven学习总结(14)——Maven 多模块项目如何分工?
  5. 每天20分钟,只需一年,一年级学生英语听力达到六年级水平!关键是坚持一点都不难!
  6. Python笔记-获取某贴吧页面所有的贴吧id
  7. 安装centos7系统
  8. Weblogic ./startWebLogic.sh Error 解决
  9. CentOS / RHEL Cachefiles 加速网络文件系统NFS访问速度
  10. java memcached delete_Memcached删除/Delete数据
  11. java-线程同步问题
  12. android小米 市场下载地址,小米手机下载的软件在哪里?小米应用商店下载路径介绍...
  13. Deeping Learning学习与感悟——《深度学习工程师》_5
  14. QTTabBar——Windows多功能标签软件
  15. 企业运营管理体系是什么?
  16. 现代控制工程(三)状态方程的解
  17. 动态规划——详细入门讲解
  18. 在计算机中用于实现域名和IP地址转换的是,internet中用于实现域名和ip地址转换的是什么...
  19. 绝密隐私!有趣的网络摄像头大揭露
  20. 城市公交站点及换乘方案设计

热门文章

  1. 田字格怎么用C语言编写程序,怎么写算法设计
  2. Linux磁盘系统——管理磁盘的命令
  3. 读取 Excel 之 Epplus
  4. python开发总结
  5. bzoj 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚【贪心+堆||差分】
  6. jQuery修改margin
  7. Windows forfiles(删除历史文件)
  8. php克隆 自动加载
  9. windows里面的批处理命令不停地处理同一条命令
  10. android:ellipsize省略文字用法(转载)