用SQL将JSON数据输出表值数据
存储过程代码
CREATE PROC Proc_JsonConvertTable(@JSON VARCHAR(MAX))
AS
--JSON测试数据
--SET @JSON='[{name:张三,age:18,hobby:打篮球},{name:李四,age:30,hobby:唱歌},{name:王五,age:33,hobby:跳舞}]';
--JSON测试数据处理
SET @JSON=REPLACE(@JSON,'[','');
SET @JSON=REPLACE(@JSON,']','');
SET @JSON=REPLACE(@JSON,'},{','}-*{');
DECLARE @ColName VARCHAR(15),
@ColName_CN VARCHAR(15),
@Value VARCHAR(100); --取列名
SELECT TOP 1
@Value=Value
FROM dbo.SplitString(@JSON,'-*',1);
DECLARE @Value2 VARCHAR(100);
SET @Value2=@Value;
SET @Value2=REPLACE(@Value2,':',',');
SET @Value2=REPLACE(@Value2,'"','');
SET @Value2=REPLACE(@Value2,'{','');
SET @Value2=REPLACE(@Value2,'}','');
DECLARE cr1 CURSOR
FOR
SELECT Value
FROM dbo.SplitString(@Value2,',',1);
OPEN cr1;
DECLARE @col VARCHAR(50),
@createSQL VARCHAR(500);
--拼接创建临时表的SQL
SET @createSQL='CREATE TABLE #TABLE (';
FETCH NEXT FROM cr1 INTO @col; DECLARE @forindex INT;
SET @forindex=2;
WHILE @@FETCH_STATUS=0
BEGIN
IF @forindex%2=0
BEGIN
SET @createSQL=@createSQL+@col+' VARCHAR(50) NOT NULL,';
SET @JSON=REPLACE(@JSON,'"','');
SET @JSON=CONVERT(VARCHAR(500),REPLACE(@JSON,':','ACC'));
SET @JSON=REPLACE(@JSON,@col+'ACC','');
END;
SET @forindex=@forindex+1;
FETCH NEXT FROM cr1 INTO @col; END;
CLOSE cr1;
DEALLOCATE cr1;
SET @createSQL=SUBSTRING(@createSQL,0,LEN(@createSQL));
SET @createSQL=@createSQL+');';
PRINT @createSQL; --处理JSON数据,并将数据插入到临时表
DECLARE cr CURSOR
FOR
SELECT Value
FROM dbo.SplitString(@JSON,'-*',1);
OPEN cr;
FETCH NEXT FROM cr INTO @Value; WHILE @@FETCH_STATUS=0
BEGIN
SET @Value=REPLACE(@Value,'{','');
SET @Value=REPLACE(@Value,'}','');
SET @Value=REPLACE(@Value,'"',''); PRINT @Value;
SET @col=(SELECT ''''+Value+''''+','
FROM SplitString(@Value,',',1)
FOR XML PATH(''));
SELECT @col=SUBSTRING(@col,0,LEN(@col));
PRINT @col;
SET @createSQL=@createSQL+'INSERT INTO #TABLE SELECT '+@col+';';
FETCH NEXT FROM cr INTO @Value;
END;
SET @createSQL=@createSQL+'SELECT * FROM #TABLE;';
PRINT @createSQL;
CLOSE cr;
DEALLOCATE cr; --执行SQL,并输出结果
EXEC(@createSQL);
测试代码
EXEC Proc_JsonConvertTable @JSON='[{name:蔡徐坤,age:18,hobby:唱、跳、Rap、篮球},{name:李四,age:30,hobby:唱歌},{name:王五,age:33,hobby:跳舞}]'
测试结果

用SQL将JSON数据输出表值数据的更多相关文章
- json与xml数据输出类
class Response { /** * 按json方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @par ...
- KETTLE——(三)数据输出
数据输出和数据输入基本差不多,KETTLE本身支持的数据输出方式也特别多,还是以数据库输出为例. 打开表输出的界面,简单介绍一下其功能: 就这个界面,如果不勾选[指定数据库字段],KETTLE ...
- xml和json格式输出
<?php class Response{ const JSON ='json'; /* * 按综合方式输出通信数据 * @param integer $ ...
- MS SQL读取JSON数据
前面有一篇<在SQL中直接把查询结果转换为JSON数据>https://www.cnblogs.com/insus/p/10905566.html,是把table转换为json. 现反过来 ...
- jquery: json树组数据输出到表格Dom树的处理方法
项目背景 项目中需要把表格重排显示 处理方法 思路主要是用历遍Json数组把json数据一个个append到5个表格里,还要给每个单元格绑定个单击弹出自定义对话框,表格分了单双行,第一行最后还要改ro ...
- jQuery操作列表数据转成Json再输出为html dom树
jQuery 把列表数据转成Json再输出为如下 dom树 <div id="menu" class="lv1"> <ul class=&qu ...
- springmvc: 普通list数据输出json
springmvc: 普通list数据输出json 加入json依赖 <dependency> <groupId>com.fasterxml.jackson.core</ ...
- python中json格式数据输出实现方式
python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...
- hive 将hive表数据查询出来转为json对象和json数组输出
一.将hive表数据查询出来转为json对象输出 1.将查询出来的数据转为一行一行,并指定分割符的数据 2.使用UDF函数,将每一行数据作为string传入UDF函数中转换为json再返回 1.准备数 ...
随机推荐
- linux设备驱动之字符设备驱动模型(1)
一:字符设备驱动 在linux下面,应用层看到的一切皆为文件(名字)所有的设备都是文件,都可以调用open,read,write来操作,而在内核中每个中每个设备有唯一的对应一个设备号: APP ( ...
- 微信小程序基于第三方websocket的服务器端部署
微信小程序后台请求越来越严格 1.request要求用https 2.websocket要求用wss 3.测试后发现websocket只能走433端口 作为.net开发,websocket又是使用的第 ...
- 《嵌入式Linux内存使用与性能优化》笔记
这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...
- sql server 高可用性技术总结
一. 复制Replication(快照.事务.合并) 应用场景: 负载均衡.提供副本读,写操作. 分区将历史数据复制到其它表中. 授权,将数据提供它人使用. 数据合并. 故障转移. 优点: 实现简单 ...
- 《Redis入门指南》第2版 读书笔记
读第二遍了,感觉和几年前读时的收获不一样了.送上门来当树洞的独自承担一切 Redis以简洁为美Redis通信协议是Redis客户端与Redis之间交流的语言,通信协议规定了命令和返回值的格式.Redi ...
- dom操作相关,byebye T T
o = { name: 'aa', price: 11, } function add(items) { var bodys = document.getElementsByTagName('tbod ...
- sublime安装AngularJS插件
sublime能够支持AngularJS开发那绝对是一件很爽的事情.下面我一步步讲解如何为sublime安装AngularJS插件. 1.添加控制包站点 根据你安装sublime 版本不同,在控制台写 ...
- tesseract-ocr识别英文和中文图片文字以及扫描图片实例讲解
本文来源:http://blog.csdn.net/wanghui2008123/article/details/37694307 本文参考http://blog.sina.com.cn/s/blog ...
- reader-write.go
{ return n, err } r.bucket.Wait(int64(n)) return n, err } type writer struct { ...
- uuid.go
package uuid import "time" func GenerateUUID() uint64 { return uint64(time.Now().UnixN ...