SQL将JSON转成列

 

好久不写东西,这个也没什么技术含量,放上来玩玩,也许有人用的着。

 

/**
* create procedure for get all fields from json 
* 
* Mark
* 
* 2014-7-17 17:16:01
* 
* */



USE QEO_Insurance
GO

IF OBJECT_ID('sp_getJSONFields') IS NOT NULL
DROP PROCEDURE sp_getJSONFields
GO

CREATE PROCEDURE sp_getJSONFields
@Json VARCHAR(MAX)
AS
BEGIN
SELECT @Json=REPLACE(@Json,'{','')
SELECT @Json=REPLACE(@Json,'}',',')
DECLARE @temp VARCHAR(100)
DECLARE @objName VARCHAR(30)
DECLARE @objValue VARCHAR(30)
DECLARE @fieldSql VARCHAR(MAX)
SET @fieldSql='select '

WHILE LEN(@Json)>0
BEGIN
    SELECT @temp=SUBSTRING(@Json,0,CHARINDEX(',',@Json,0))
    --PRINT @temp 
    SELECT @Json=RIGHT(@Json,LEN(@Json)-LEN(@temp)-1)
    --PRINT @Json
    
    set @objName =left(@temp,CHARINDEX(':',@temp,0)-1)
    set @objValue =right(@temp,len(@temp)-CHARINDEX(':',@temp,0))
    
    --PRINT  @objName+'='+ @objValue+';'
    set @fieldSql=@fieldSql+REPLACE(@objValue,'"','''')+' as '+REPLACE(@objName,'"','')+','
    
    --PRINT '------------------'    
END
SET @fieldSql=LEFT(@fieldSql,LEN(@fieldSql)-1)

--EXEC sp_executesql @fieldSql
EXEC (@fieldSql)
END
GO

EXEC sp_getJSONFields @json= '{"VIN_Invalid":"1","VIN_ID":"427658","Veh_TypeCode":"CTRK","Year":"2011","Make":"TOYOTA","Veh_Model":"TUNDRA","Body_CD":"PK"}'

 

输入:

{"VIN_Invalid":"1","VIN_ID":"427658","Veh_TypeCode":"CTRK","Year":"2011","Make":"TOYOTA","Veh_Model":"TUNDRA","Body_CD":"PK"}

输出:

 

 

2014-07-1719:38:41

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值