关于SQL Server 2017中使用json传参时解析遇到的多层解析问题
开发新的系统,DB部分使用了SQL Server从2016版开始自带的Json解析方式。
用了快半年,在个人项目,以及公司部分项目上使用了,暂时还没遇到大的问题,和性能问题。
今天在解析Json的多级参数遇到了点小问题,在此记录一下:
传参内容如下:
declare @json varchar(max)=N'{"Customer":36,"Positions":[{"ID":0,"Quantity":180000,"Files":[180,177,175,172,170,169,167,164,161,162,159,158,153,152]}]}';
想解析出Positions里面的Files,但是一直报错,或者NULL。
查询文档,发现这种解析需要制定的字段类型,并准成json才行。
解析的SQL Script如下:
select ID, Quantity, FileID=f.value
from openjson (@json, '$.Positions')
with (
ID int,
Quantity int,
Files nvarchar(max) '$.Files' as json
) x
cross apply openjson(x.Files, '$') f
*注:其中第6行的写法是固定的:字段类型及后面的。
关于SQL Server 2017中使用json传参时解析遇到的多层解析问题的更多相关文章
- CDC在sql server 2017中无法使用的问题
Symptom === sp_MScdc_capture_job in the CDC job raised error message Msg 217, Level 16, State 1, Pro ...
- 在SQL Server 2017 中,当Alwasyon group启用了DTC_SUPPORT = PER_DB, 会导致无法创建replicaiton.
当Alwasyon group启用了DTC_SUPPORT = PER_DB, 会导致无法创建replicaiton.无法修改已经存在的replication. 原因: 当当Alwasyon grou ...
- SQL Server 2016原生支持JSON
转载原地址: http://www.cnblogs.com/lyhabc/p/4747694.html SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML ...
- Linux 上的 SQL Server 2017 的安装指南
一:介绍背景 微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会 ...
- SQL Server 2017 各版本之间的差异
SQL Server 2017的亮点 您选择的语言和平台 使用您选择的语言在本地和云中(现在在 Windows.Linux 和 Docker 容器上)构建现代应用程序. 行业领先的性能 充分利用任务关 ...
- asp.net core 中 sql server 2017 数据库连接测试
使用sql server 2017 进行连接: 配置appsettings.json文件 { "ConnectionStrings": { "DefaultConnect ...
- Python和SQL Server 2017的强大功能
Python和SQL Server 2017的强大功能 摘要: 源:https://www.red-gate.com/simple-talk/sql/sql-development/power-pyt ...
- 迁移数据库数据到SQL Server 2017
概述 本篇我们将利用DMA一步一步实现SQL Server 的迁移.帮助大家理解现在的SQL Server与新版本的融合问题,同时需要我们做哪些操作来实现新版本的升级或者迁移. SQL Serve ...
- SQL Server存储过程中使用表值作为输入参数示例
这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...
随机推荐
- 微信小程序开发-概述
微信小程序开发-概述 一.小程序申请&APPID 登录微信平台申请成为小程序开发者,小程序不可直接使用服务号或订阅号的AppID,需要登录微信公众平台管理后台,在网站的"设置&quo ...
- Docker挂载主机目录Docker访问出现Permission denied的解决办法
Docker挂载主机目录,访问相应的文件出现Premission denied的权限访问问题, [root@localhost soft]# docker images REPOSITORY ...
- Redis笔记(六):Java中使用Redis
Java程序使用Redis 添加依赖包 Maven依赖方式 <dependency> <groupId>redis.clients</groupId> <ar ...
- C#基础知识回顾--BackgroundWorker介绍
简介 BackgroundWorker是.net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作.耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 始终 ...
- Pivot
测试数据 Create Table TPivot ( ID ,), ProductName ), SalesMonth int, SalesCount int ) insert into TPivot ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- win10 uwp 让焦点在点击在页面空白处时回到textbox中
在网上 有一个大神问我这样的问题:在做UWP的项目,怎么能让焦点在点击在页面空白处时回到textbox中? 虽然我的小伙伴认为他这是一个 xy 问题,但是我还是回答他这个问题. 首先需要知道什么是空白 ...
- automapper 自动映射 集成asp.net Core2.1
学习博文:https://www.cnblogs.com/yan7/p/8085410.html 1.使用nuget 安装 <PackageReference Include="Aut ...
- Java中泛型通配符的一点概念
以List<T>为例,通常如果我们想在List中存储某种类型的数据,我们会用下面的语法进行声明和使用: List<String> allMsg = new ArrayList& ...
- POJ3414(KB1-H BFS)
Pots Description You are given two pots, having the volume of A and B liters respectively. The follo ...