存储过程代码

 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数据输出表值数据的更多相关文章

  1. json与xml数据输出类

    class Response { /** * 按json方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @par ...

  2. KETTLE——(三)数据输出

    数据输出和数据输入基本差不多,KETTLE本身支持的数据输出方式也特别多,还是以数据库输出为例. ​ 打开表输出的界面,简单介绍一下其功能: ​ 就这个界面,如果不勾选[指定数据库字段],KETTLE ...

  3. xml和json格式输出

    <?php   class Response{     const JSON ='json';       /*     * 按综合方式输出通信数据     * @param integer $ ...

  4. MS SQL读取JSON数据

    前面有一篇<在SQL中直接把查询结果转换为JSON数据>https://www.cnblogs.com/insus/p/10905566.html,是把table转换为json. 现反过来 ...

  5. jquery: json树组数据输出到表格Dom树的处理方法

    项目背景 项目中需要把表格重排显示 处理方法 思路主要是用历遍Json数组把json数据一个个append到5个表格里,还要给每个单元格绑定个单击弹出自定义对话框,表格分了单双行,第一行最后还要改ro ...

  6. jQuery操作列表数据转成Json再输出为html dom树

    jQuery 把列表数据转成Json再输出为如下 dom树 <div id="menu" class="lv1"> <ul class=&qu ...

  7. springmvc: 普通list数据输出json

    springmvc: 普通list数据输出json 加入json依赖 <dependency> <groupId>com.fasterxml.jackson.core</ ...

  8. python中json格式数据输出实现方式

    python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...

  9. hive 将hive表数据查询出来转为json对象和json数组输出

    一.将hive表数据查询出来转为json对象输出 1.将查询出来的数据转为一行一行,并指定分割符的数据 2.使用UDF函数,将每一行数据作为string传入UDF函数中转换为json再返回 1.准备数 ...

随机推荐

  1. c语言之单链表的创建及排序

    今天对之前学习过的链表知识进行简单的总结顺便写点代码:创建一个链表有头插法跟尾插法两种,在下面代码中我们为结点分配的内存实在堆上分配的,因此需要我们手动释放,释放用free()函数 下面代码贴出具体代 ...

  2. RestTemplate的设置及使用

    概述 RestTemplate是spring内置的http请求封装,在使用spring的情况下,http请求直接使用RestTemplate是不错的选择. Rest服务端 使用RestTemplate ...

  3. React Native系列(6) - 编译安卓私有React-Native代码

    为何要自己编译React Native安卓私有代码 我们在开发中遇到一个HTTP2的问题,React Native安卓客户端在和HTTP2支持的服务器通讯的过程中会有crash,见 React-Nat ...

  4. 浅谈前端中的mvvm与mvc

    用了vue这么久,却没有认真的关注mvvm与mvc,着实汗颜.趁着周末刚好看了一下网上的文章还有书籍,简单的谈一下我的理解. -以下图片均摘自网络. 一.MVC 特点:单项通讯 视图(View):用户 ...

  5. Latex数学公式中的空格表示方法

    两个quad空格 a \qquad b 两个m的宽度 quad空格 a \quad b 一个m的宽度 大空格 a\ b 1/3m宽度 中等空格 a\;b 2/7m宽度 小空格 a\,b 1/6m宽度 ...

  6. C. Liebig's Barrels

    You have m = n·k wooden staves. The i-th stave has length ai. You have to assemble nbarrels consisti ...

  7. Java Script 读书笔记 (三) 函数

    1. 函数作用域 在函数内部定义的变量,外部无法读取,称为"局部变量"(local variable). 变量v在函数内部定义,所以是一个局部变量,函数之外就无法读取. 函数内部定 ...

  8. freemarker导出word文档

    使用freemarker导出word文档的过程 **************************************************************************** ...

  9. CentOS 7下单机部署RabbltMQ环境的操作记录

    一. RabbitMQ简单介绍 在日常工作环境中,你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息 ...

  10. Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0

    起因是我运行wordcount测试一直卡主,不能执行,一直处于 Accept 状态,等待被执行,刚开始是各种配置yarn参数,以及host配置,后来发现还是不行 hadoop 集群安装完成后,在500 ...