用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.准备数 ...
随机推荐
- ASP.NET后台中调用前台Javascript函数的几种方法
做web开发,用的技术是aspx.net,可是由于比较习惯于ASP现在做起来,觉得非常别扭,原因在于有很多功能其实在前台可以处理的,但是因为用到了很多webcontrol,导致不断postback.如 ...
- Websql,应用程序缓存,WebWorkers,SSE,WebSocket
①什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的 ...
- 你不知道的JavaScript--Item17 循环与prototype最后的几点小tips
1.优先使用数组而不是Object类型来表示有顺序的集合 ECMAScript标准并没有规定对JavaScript的Object类型中的属性的存储顺序. 但是在使用for..in循环对Object中的 ...
- Linux 上一些常用命令
切换权限: sudo chown -R 权限名: 文件 tar -zcvf 文件夹.tar 文件夹--exclude=要过滤的文件夹路径 重启crontab :service crond restar ...
- 原生JS和JQuery的区别
1.原生js和jQuery的入口函数加载模式不同 原生js等页面dom加载完成并且图片等资源也加载完成之后才会执行: jQuery则是等页面dom加载完成执行,不会等图片等资源也加载完成: (也就是说 ...
- (一)Servlet简介
相关名词解释 HTML:Hyper Text Markup Language,超文本标记语言 HTTP:Hyper Text Transfer Protocol,超文本传输协议 URL:Uniform ...
- Python 时间模块
模块分类 标准库 python解释器自带的, sys, os等 开源模块 比如selenium中的测试框架 自定义模块 比如自己封装的测试框架 时间格式 时间戳 当前时间减去1970年1月1日00:0 ...
- 前端BUG监控神器
有时候,看到用户的反馈,我们往往会一脸茫然,因为反馈的信息太少了. 比如有用户反馈登录不了.为了解这个问题,一般的流程是这样的:首先试试自己能不能登录网站,发现没问题:然后查看后台日志,发现最近没有登 ...
- 【缩点+拓扑判链】POJ2762 Going from u to v or from v to u?
Description In order to make their sons brave, Jiajia and Wind take them to a big cave. The cave has ...
- 将wiki人脸数据集中的图片按男女分类
import shutil f_in = 'D:/wiki_crop' # 读取文件中图片信息根据性别分类图片到对应目录中 dirroot = "D:/" f = open(dir ...