一种在SQL Server中传递多行数据的方法

这是一种比较偷懒的方法,其实各种数据库对Json 支持的很好。sql server 、oracle都不错。所以可以直接传json

declare @这是一个json varchar(max)
set @这是一个json='{"data":[{"code":"1","name":"啥1"},{"code":"2","name":"啥2"},{"code":"3","name":"啥3"},{"code":"4","name":"啥4"},{"code":"5","name":"啥5"}]}'
 

这一个普普通通的json ,5行 2列的数据

{
    "data": [
        {
            "code": "1",
            "name": "啥1"
        },
        {
            "code": "2",
            "name": "啥2"
        },
        {
            "code": "3",
            "name": "啥3"
        },
        {
            "code": "4",
            "name": "啥4"
        },
        {
            "code": "5",
            "name": "啥5"
        }
    ]
}

查询

查询很简单
select * from OPENJSON(@这是一个json,'$.data') WITH (  code  varchar(50) '$.code'  ,name  varchar(50) '$.name') 

结果很清晰

插入

插入很容易

--插入多行到表
declare @t table( code  varchar(50),name  varchar(50) )


insert into @t(code,name) select code,name from OPENJSON(@这是一个json,'$.data') WITH (  code  varchar(50) '$.code'  ,name  varchar(50) '$.name') 
select @@ROWCOUNT as 插入行数

生成新的json

也是一句话的事情

--生成新的json
select (select * from @t for json path, root('data')) as 新的json

全部代码

declare @这是一个json varchar(max)
set @这是一个json='{"data":[{"code":"1","name":"啥1"},{"code":"2","name":"啥2"},{"code":"3","name":"啥3"},{"code":"4","name":"啥4"},{"code":"5","name":"啥5"}]}'


--查询
select * from OPENJSON(@这是一个json,'$.data') WITH (  code  varchar(50) '$.code'  ,name  varchar(50) '$.name') 

--插入多行到表
declare @t table( code  varchar(50),name  varchar(50) )
insert into @t(code,name) select code,name from OPENJSON(@这是一个json,'$.data') WITH (  code  varchar(50) '$.code'  ,name  varchar(50) '$.name') 
select @@ROWCOUNT as 插入行数

--生成新的json
select (select * from @t for json path, root('data')) as 新的json

题外话

赶进度,或者项目不是高并发的时候,这么写还是可以的,主打一个 偷懒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月巴月巴白勺合鸟月半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值