SQL SERVER 数据导出JSON

执行下面的存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE[dbo].[SerializeJSON](
@ParameterSQL AS VARCHAR(MAX)
)
AS
BEGIN
  
DECLARE @SQL NVARCHAR(MAX)
DECLARE @XMLString VARCHAR(MAX)
DECLARE @XML XML
DECLARE @Paramlist NVARCHAR(1000)
SET @Paramlist = N'@XML XML OUTPUT'
SET @SQL = 'WITH PrepareTable (XMLString)'
SET @SQL = @SQL + 'AS('
SET @SQL = @SQL + @ParameterSQL+ 'FOR XML RAW,TYPE,ELEMENTS'
SET @SQL = @SQL + ')'
SET @SQL = @SQL + 'SELECT @XML=[XMLString]FROM[PrepareTable]'
EXEC sp_executesql @SQL, @Paramlist, @XML=@XML OUTPUT
SET @XMLString=CAST(@XML AS VARCHAR(MAX))
  
DECLARE @JSON VARCHAR(MAX)
DECLARE @Row VARCHAR(MAX)
DECLARE @RowStart INT
DECLARE @RowEnd INT
DECLARE @FieldStart INT
DECLARE @FieldEnd INT
DECLARE @KEY VARCHAR(MAX)
DECLARE @Value VARCHAR(MAX)
  
DECLARE @StartRoot VARCHAR(100);SET @StartRoot='<row>'
DECLARE @EndRoot VARCHAR(100);SET @EndRoot='</row>'
DECLARE @StartField VARCHAR(100);SET @StartField='<'
DECLARE @EndField VARCHAR(100);SET @EndField='>'
  
SET @RowStart=CharIndex(@StartRoot,@XMLString,0)
SET @JSON=''
WHILE @RowStart>0
BEGIN
    SET @RowStart=@RowStart+Len(@StartRoot)
    SET @RowEnd=CharIndex(@EndRoot,@XMLString,@RowStart)
    SET @Row=SubString(@XMLString,@RowStart,@RowEnd-@RowStart)
    SET @JSON=@JSON+'{'
  
    -- for each row
    SET @FieldStart=CharIndex(@StartField,@Row,0)
    WHILE @FieldStart>0
    BEGIN
        -- parse node key
        SET @FieldStart=@FieldStart+Len(@StartField)
        SET @FieldEnd=CharIndex(@EndField,@Row,@FieldStart)
        SET @KEY=SubString(@Row,@FieldStart,@FieldEnd-@FieldStart)
        SET @JSON=@JSON+'"'+@KEY+'":'
        -- parse node value
        SET @FieldStart=@FieldEnd+1
        SET @FieldEnd=CharIndex('</',@Row,@FieldStart)
        SET @Value=SubString(@Row,@FieldStart,@FieldEnd-@FieldStart)
        SET @JSON=@JSON+'"'+@Value+'",'
  
        SET @FieldStart=@FieldStart+Len(@StartField)
        SET @FieldEnd=CharIndex(@EndField,@Row,@FieldStart)
        SET @FieldStart=CharIndex(@StartField,@Row,@FieldEnd)
    END   
    IF LEN(@JSON)>0SET @JSON=SubString(@JSON,0,LEN(@JSON))
    SET @JSON=@JSON+'},'
    --/ for each row
  
    SET @RowStart=CharIndex(@StartRoot,@XMLString,@RowEnd)
END
IF LEN(@JSON)>0SET @JSON=SubString(@JSON,0,LEN(@JSON))
SET @JSON='['+@JSON+']'
SELECT @JSON
  
END
GO
执行下面的脚本就能生成JSON格式数据
EXEC[SerializeJSON] 'SELECT * FROM [dbo].[TEST]'
 

转载于:https://www.cnblogs.com/hank-chen/p/5916929.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP+Javabean+Servlet实现用户注册

在entity包下新建javabean 也就是实体类User 注意id用 Integer 而不用 int&#xff0c; 因为 int 自动初始化为0 public class User { private Integer id; private String username; private String password; 后面是set和get方法... 在Servlet包下创建servlet 右击Servlet…

main的方法是Java_Java中的main()方法

在Java中&#xff0c;main()方法是Java應用程序的入口方法&#xff0c;也就是說&#xff0c;程序在運行的時候&#xff0c;第一個執行的方法就是main()方法&#xff0c;這個方法和其他的方法有很大的不同&#xff0c;比如方法的名字必須是main&#xff0c;方法必須是public sta…

深入理解Python的logging模块:从基础到高级

在Python编程中&#xff0c;日志记录是一种重要的调试和错误追踪工具。Python的logging模块提供了一种灵活的框架&#xff0c;用于发出日志消息&#xff0c;这些消息可以被发送到各种输出源&#xff0c;如控制台、文件、HTTP GET/POST位置等。本文将深入探讨Python的logging模块…

http请求连接

1、在Info.plist中添加NSAppTransportSecurity类型Dictionary。2、在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES转载于:https://www.cnblogs.com/liuting-1204/p/5919233.html

数据库不完全恢复 以及恢复到测试环境:

sample 1: 1.清空归档日志 RMAN> crosscheck archivelog all; RMAN> delete achivelog all; 2.清空数据文件。 select name from v$datafile; rm v$datafile 3.恢复数据 ##check file date: ##把db数据恢复到&#xff1a;2017-02-05 00:00:00 ls -lt /ngenprdblog/ ls…

centos7安装java6_CentOS7.6安装jdk1.8

2、登录Linux服务器&#xff0c;通过rz命令将jdk导入服务器如果没有rz命令 需要先安装lrzszyum install lrzsz -y3、将jdk压缩包解压到指定路径 -C 指定路径4、配置环境变量编辑/etc/profile文件 在末尾加上以下内容 wq保存退出source /etc/profile文件 使配置文件生效export J…

ubuntu安装wkhtmltopdf

下载安装wkhtmltox系统环境 http://wkhtmltopdf.org/downloads.html wget https://bitbucket.org/wkhtmltopdf/wkhtmltopdf/downloads/wkhtmltox-0.13.0-alpha-7b36694_linux-precise-amd64.deb dpkg -i 安装包名字 当我把它生成pdf的时候我想让每个块都是一页&#xff0c;经过…

人生苦短,我用python——当我在玩python的时候我玩些什么 -

程序的基本思路 用一个txt文件记录电脑的一天内累计使用时间累计使用时间超过若干小时就会自动关机程序开机自动运行 为什么我最后选择了python 想着怎么写、搜资料的时候就发现Java并不适合&#xff0c;虽然不是不能实现&#xff0c;但有好几个问题解决起来都有点麻烦。对我这…

IO流的练习5 —— 读取文件中的字符串,排序后写入另一文件中

需求&#xff1a;已知s.txt文件中有这样的一个字符串&#xff1a;“hcexfgijkamdnoqrzstuvwybpl”     请编写程序读取数据内容&#xff0c;把数据排序后写入ss.txt中。分析&#xff1a;   A&#xff1a;读取文件中的数据   B&#xff1a;把数据存在一个字符串中   C…

java解析未知key json_Gson解析JSON中动态未知字段key的方法

前面一篇文章我介绍了Gson的解析的基本方法。但我们在享受Gson解析的高度封装带来的便利时&#xff0c;有时可能会遇到一些特殊情况&#xff0c;比如json数据中的字段key是动态可变的时候&#xff0c;由于Gson是使用静态注解的方式来设置实体对象的&#xff0c;因此我们很难直接…

Twisted入门教程(5)

2019独角兽企业重金招聘Python工程师标准>>> 第五部分&#xff1a;由Twited支持的诗歌下载服务客户端 你可以从这里从头开始阅读这个系列 抽象地构建客户端 在第四部分中&#xff0c;我们构建了第一个使用Twisted的客户端。它确实能很好地工作&#xff0c;但仍有提高…

Jquery 学习之基础一

1.添加一个CSS类 $("button").click(function(){ $("#div1").addClass("important blue");}); 2.移除一个类 $("button").click(function(){ $("h1,h2,p").removeClass("blue");}); 3.切换类 $("button&…

**print('人生苦短 我爱Python')**

print(‘人生苦短 我爱Python’) 一、变量 **""" 1.代码自上而下执行 2_运算符和表达式.一行一句&#xff0c;不要把多个语句写到一行上&#xff0c;可读性不好 3中文只能出现在引号里&#xff0c;其他地方不能出现中文 4不能随意缩进 """**pr…

java线程提高速度_如何在JAVA中减慢线程速度

我有这个类,我在其中运行10次for循环.该类实现了Runnable接口.现在在main()中我创建了2个线程.现在两个都将循环运行到10.但我想检查每个线程的循环计数.如果t1超过7,则让它休眠1秒,以便让t2完成.但是如何实现这一目标呢&#xff1f;请参阅代码.我尝试但看起来完全愚蠢.只是如何…

(转ORCLE导入导出命令)

oracle数据库导入导出命令&#xff01;Oracle数据导入导出imp/exp 功能&#xff1a;Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。 大多情况都可以用Oracle数据导入导出完成数据的备份和还原&#xff08;不会造成数据的丢失&#xff09;。 Oracle有个好处&…

笔记本(华硕UL80VT)软件超频setFSB

Warning !!!If you are a beginner, do not use this software. This software is for power users only. Use "SetFSB.exe" at your own risk.试了setfsb各种版本&#xff0c;基本不能打开。还有官网的免费版&#xff0c;居然不能用&#xff0c;真是很奇怪。 官网&a…

Day01-python编程基础

1. 程序 为了完成某种特定功能&#xff0c;以某种程序设计语言编写的有序指令的集合。程序是指挥cpu工作的“工作手册”。计算机只能执行二进制代码&#xff0c;程序设计语言一般类似英文&#xff0c;想要让计算机理解你写的程序&#xff0c;必须把程序代码“翻译”成计算机能…

pro c 访问 MySQL_Pro*C  OCI  OCCI  及OCI介绍

Pro*C OCIOCCI 这三种都是C/C访问数据库的手段。Pro*C&#xff1a;内嵌SQL,预编译后把内嵌SQL处理为ORACLE标准运行库的调用&#xff0c;然后再象编译一般的C程序一样进行编译、连接、运行。1.proc XXX.pc2.gcc/g XXX.c –lclntsh(PRO*C的预编译&#xff0c;也可直接MAKEFILE…

细说Cookie

http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html转载于:https://www.cnblogs.com/benpaodexiaopangzi/p/5933230.html

Node.js~在linux上的部署

我们以centOS为例来说说如何部署node.js环境 一 打开centos,然后开始下载node.js包 curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs 二 安装gcc环境 yum install gcc-c make 安装完成! 三 安装nodejs的npm,这是一个包程序工具…