SQL,如果碰到Json,你会怎么做?
1、Json串如下:
DECLARE @JsonInfo NVARCHAR()
SET @JsonInfo=N'
{
"CalcPayInput":{
"ServiceCode":"",
"Items":[
{
"Length":,
"Width":,
"High":
}
]
},
"BusinessBody":{
"WaybillNumber":"SZY222019082001135"
}
}
'
SELECT Len(@JsonInfo) /*实际存储建议使用这种,压缩一行保存*/
SET @JsonInfo=N'{"CalcPayInput":{"ServiceCode":"2131296","Items":[{"Length":10,"Width":50,"High":80}]},"BusinessBody":{"WaybillNumber":"SZY222019082001135"}}'
SELECT Len(@JsonInfo)
2、获取json串的ServiceCode字段的值
注意:SQL SERVER 版本以后的支持(旧版本需要升级) 解析Json之前验证一下是否是Json语句select ISJSON(@JsonInfo) 如果字符串包含有效 JSON,则返回 ;否则,返回 。 如果 expression 为 NULL,则返回 NULL。 SELECT JSON_VALUE(@JsonInfo,'$.CalcPayInput.ServiceCode')ServiceCode
3、获取json串的Length字段的值
注意:层级关系,Items是集合,获取集合的第一项,[],索引从0开始 SELECT JSON_VALUE(@JsonInfo,'$.CalcPayInput.Items[0].Length') Length
4、获取json串的WaybillNumber字段的值
注意:Json串第一层存在多个子对象 SELECT JSON_VALUE(@JsonInfo,'$.BusinessBody.WaybillNumber') WaybillNumber
5、修改json串的WaybillNumber字段的值为YZY222019082001135
注意:Json串第一层存在多个子对象 SELECT JSON_MODIFY(@JsonInfo, '$.BusinessBody.WaybillNumber','YZY222019082001135') JsonInfo
6、去除json串的WaybillNumber字段
注意:将不需要的字段定位到,利用JSON_MODIFY函数置为NULL SELECT JSON_MODIFY(@JsonInfo, '$.BusinessBody.WaybillNumber',null) JsonInfo
7、添加json串的ProductCode字段
注意:将不需要的字段定位到,利用JSON_MODIFY函数添加 SELECT JSON_MODIFY(@JsonInfo, '$.BusinessBody.ProductCode','') JsonInfo
8、参考文档
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/isjson-transact-sql?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/json-value-transact-sql?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/json-query-transact-sql?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/t-sql/functions/json-modify-transact-sql?view=sql-server-2017
微信: 查看我的相册
简书:https://www.jianshu.com/u/dbfbe12c187d
欢迎大家加我,咨询问题,尽我的能力解决,我知道的问题。
SQL,如果碰到Json,你会怎么做?的更多相关文章
- MySQL 8.0: From SQL Tables to JSON Documents (and back again)
MySQL 8.0: From SQL Tables to JSON Documents (and back again) | MySQL Server Bloghttps://mysqlserver ...
- 三、SQL Server 对JSON的支持
一.SQL Server 对JSON的支持 一.实现效果 现在 我用数据库是sql2008 ,共计2万数据. 每一条数据里面的有一个为attribute字段是 json存储状态属性, 我怎么查看 ...
- 《大话数据库》-SQL语句执行时,底层究竟做了什么小动作?
<大话数据库>-SQL语句执行时,底层究竟做了什么小动作? 前言 大家好,我是Taoye,试图用玩世不恭过的态度对待生活的Coder. 现如今我们已然进入了大数据时代,无论是业内还是业外的 ...
- SQL Server 2016 JSON原生支持实例说明
背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好.比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON.尤其对于一些 ...
- cocos2d-x 读取 json 文件并用 jsoncpp 做解析
一码胜万言(请看注释) CclUtil.h // // CclUtil.h // PracticeDemo // // Created by kodeyang on 8/1/13. // // #if ...
- 在SQL 中生成JSON数据
这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...
- .NET Core 1.1日期解析无APi、SQL Server数据转换JSON
前言 在批量导入Excel中的数据时发现出生日期为整数也就是为天数,结果倒腾了翻,这是其一,其二是数据库中的某一列存的是JSON数据,但是场景是为了作为作业来运行,此时不得不将筛选出的数据手动拼接成J ...
- SQL SERVER解析Json
外包的项目,有很多信息存储在JSON中,无论是查询还是修改信息都十分麻烦.找了一些实用的SQL Function去解析,并附修改例子. 使用过程: 1. 需要在SQL新建自定义类型 table: Hi ...
- SQL Server之JSON 函数
SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型.XML索引及各种管理或输出XML格式的函数.随着JSON的流行,SQL Server2016开始支持JSON数据类型,不 ...
随机推荐
- PythonDay05
第五章 今日内容 字典 字典 语法:{'key1':1,'key2':2} 注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以 ...
- 动态SQL查询
if+where: 用于查询操作,where标签可以智能判断是否添加and.or.where关键词 示例: <select id="findByParam" resultTy ...
- 解决微信二次分享失败--后面被加上from=singlemessage&isappinstalled=0的解决方案
首次分享成功,点开后再次分享或第三次分享就失败了 1.检查你分享的链接,看是否多了两个参数,微信分享会根据分享的不同,为原始链接拼接: 朋友圈 from=timeline&isappins ...
- 解决socket粘包的两种low版模式 os.popen()和struct模块
os.popen()模式 server端 import socket import os phone = socket.socket() # 实例化一个socket对象 phone.bind((&qu ...
- Javascript中,实现十大排序方法之一(冒泡排序及其优化设想)
冒泡排序的Javascript实现 首先定义一个取值范围在(0~100000)之间的随机值的长度为10万的数组, function bubbleSort(arr) { console.time('冒泡 ...
- Javascript中将数字转换为中文的方法
//js实现将数字1234转化为汉字字符串(一千二百三十四)(或大写汉字壹仟贰佰叁拾肆): /*阿拉伯数字转中文数字 中文数字的特点: 每个计数数字都跟着一个权位,权位有:十.百.千.万.亿. 以“万 ...
- Go语言框架:Beego vs Gin 的区别
前言: 一切语言.技术或者框架,本质都是工具,工具的价值在于为使用者提供竞争优势. 一.Beego和Gin全方位比较 MVC Beego支持完整的MVC, Gin不支持完整的MVC(需要开发者自己实现 ...
- Selenium webdriver工作原理
webdriver是以server-client 经典模式设计的 server端可以是任何浏览器作为remote server,职责就是处理client的请求并作出相应操作,response的具体内容 ...
- Redis缓存,持久化,高可用
一,Redis作缓存服务器 本篇博客是接着上一篇博客未分享完的技术点. redis作为缓存服务器是众多企业中的选择之一,虽然该技术很成熟但也是存在一定的问题.就是缓存带来的缓存穿透,缓存击穿, ...
- Python: 转换文本编码
最近在做周报的时候,需要把csv文本中的数据提取出来制作表格后生产图表. 在获取csv文本内容的时候,基本上都是用with open(filename, encoding ='UTF-8') as f ...