存储过程代码

  1. CREATE PROC Proc_JsonConvertTable(@JSON VARCHAR(MAX))
  2. AS
  3. --JSON测试数据
  4. --SET @JSON='[{name:张三,age:18,hobby:打篮球},{name:李四,age:30,hobby:唱歌},{name:王五,age:33,hobby:跳舞}]';
  5. --JSON测试数据处理
  6. SET @JSON=REPLACE(@JSON,'[','');
  7. SET @JSON=REPLACE(@JSON,']','');
  8. SET @JSON=REPLACE(@JSON,'},{','}-*{');
  9. DECLARE @ColName VARCHAR(15),
  10. @ColName_CN VARCHAR(15),
  11. @Value VARCHAR(100);
  12.  
  13. --取列名
  14. SELECT TOP 1
  15. @Value=Value
  16. FROM dbo.SplitString(@JSON,'-*',1);
  17. DECLARE @Value2 VARCHAR(100);
  18. SET @Value2=@Value;
  19. SET @Value2=REPLACE(@Value2,':',',');
  20. SET @Value2=REPLACE(@Value2,'"','');
  21. SET @Value2=REPLACE(@Value2,'{','');
  22. SET @Value2=REPLACE(@Value2,'}','');
  23. DECLARE cr1 CURSOR
  24. FOR
  25. SELECT Value
  26. FROM dbo.SplitString(@Value2,',',1);
  27. OPEN cr1;
  28. DECLARE @col VARCHAR(50),
  29. @createSQL VARCHAR(500);
  30. --拼接创建临时表的SQL
  31. SET @createSQL='CREATE TABLE #TABLE (';
  32. FETCH NEXT FROM cr1 INTO @col;
  33.  
  34. DECLARE @forindex INT;
  35. SET @forindex=2;
  36. WHILE @@FETCH_STATUS=0
  37. BEGIN
  38. IF @forindex%2=0
  39. BEGIN
  40. SET @createSQL=@createSQL+@col+' VARCHAR(50) NOT NULL,';
  41. SET @JSON=REPLACE(@JSON,'"','');
  42. SET @JSON=CONVERT(VARCHAR(500),REPLACE(@JSON,':','ACC'));
  43. SET @JSON=REPLACE(@JSON,@col+'ACC','');
  44. END;
  45. SET @forindex=@forindex+1;
  46. FETCH NEXT FROM cr1 INTO @col;
  47.  
  48. END;
  49. CLOSE cr1;
  50. DEALLOCATE cr1;
  51. SET @createSQL=SUBSTRING(@createSQL,0,LEN(@createSQL));
  52. SET @createSQL=@createSQL+');';
  53. PRINT @createSQL;
  54.  
  55. --处理JSON数据,并将数据插入到临时表
  56. DECLARE cr CURSOR
  57. FOR
  58. SELECT Value
  59. FROM dbo.SplitString(@JSON,'-*',1);
  60. OPEN cr;
  61. FETCH NEXT FROM cr INTO @Value;
  62.  
  63. WHILE @@FETCH_STATUS=0
  64. BEGIN
  65. SET @Value=REPLACE(@Value,'{','');
  66. SET @Value=REPLACE(@Value,'}','');
  67. SET @Value=REPLACE(@Value,'"','');
  68.  
  69. PRINT @Value;
  70. SET @col=(SELECT ''''+Value+''''+','
  71. FROM SplitString(@Value,',',1)
  72. FOR XML PATH(''));
  73. SELECT @col=SUBSTRING(@col,0,LEN(@col));
  74. PRINT @col;
  75. SET @createSQL=@createSQL+'INSERT INTO #TABLE SELECT '+@col+';';
  76. FETCH NEXT FROM cr INTO @Value;
  77. END;
  78. SET @createSQL=@createSQL+'SELECT * FROM #TABLE;';
  79. PRINT @createSQL;
  80. CLOSE cr;
  81. DEALLOCATE cr;
  82.  
  83. --执行SQL,并输出结果
  84. EXEC(@createSQL);

测试代码

  1. 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. ASP.NET后台中调用前台Javascript函数的几种方法

    做web开发,用的技术是aspx.net,可是由于比较习惯于ASP现在做起来,觉得非常别扭,原因在于有很多功能其实在前台可以处理的,但是因为用到了很多webcontrol,导致不断postback.如 ...

  2. Websql,应用程序缓存,WebWorkers,SSE,WebSocket

    ①什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的 ...

  3. 你不知道的JavaScript--Item17 循环与prototype最后的几点小tips

    1.优先使用数组而不是Object类型来表示有顺序的集合 ECMAScript标准并没有规定对JavaScript的Object类型中的属性的存储顺序. 但是在使用for..in循环对Object中的 ...

  4. Linux 上一些常用命令

    切换权限: sudo chown -R 权限名: 文件 tar -zcvf 文件夹.tar 文件夹--exclude=要过滤的文件夹路径 重启crontab :service crond restar ...

  5. 原生JS和JQuery的区别

    1.原生js和jQuery的入口函数加载模式不同 原生js等页面dom加载完成并且图片等资源也加载完成之后才会执行: jQuery则是等页面dom加载完成执行,不会等图片等资源也加载完成: (也就是说 ...

  6. (一)Servlet简介

    相关名词解释 HTML:Hyper Text Markup Language,超文本标记语言 HTTP:Hyper Text Transfer Protocol,超文本传输协议 URL:Uniform ...

  7. Python 时间模块

    模块分类 标准库 python解释器自带的, sys, os等 开源模块 比如selenium中的测试框架 自定义模块 比如自己封装的测试框架 时间格式 时间戳 当前时间减去1970年1月1日00:0 ...

  8. 前端BUG监控神器

    有时候,看到用户的反馈,我们往往会一脸茫然,因为反馈的信息太少了. 比如有用户反馈登录不了.为了解这个问题,一般的流程是这样的:首先试试自己能不能登录网站,发现没问题:然后查看后台日志,发现最近没有登 ...

  9. 【缩点+拓扑判链】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 ...

  10. 将wiki人脸数据集中的图片按男女分类

    import shutil f_in = 'D:/wiki_crop' # 读取文件中图片信息根据性别分类图片到对应目录中 dirroot = "D:/" f = open(dir ...