如何从SQL Server读取JSON数据?

时间:2015-11-23 08:49:11

标签: sql sql-server json

我想从SQL Server 2012中读取Json数据,我知道它将支持在SQL Server 2016中读取Json数据,但我现在需要一种解决方法来阅读它。

我有一个带有这个Json代码的列Text

{"en": "Green", "ar": "أخضر"}

我想要一个过程或函数给它语言前缀并将值返回给我。

1 个答案:

答案 0 :(得分:6)

如果您在SQL Server 2012中寻找表格和表格到JSON的通用SQL Server JSON,则此article提供parseJSONdbo.ToJSON功能。使用此代码,您可以运行以下代码:

select * from dbo.parseJSON('  
    {
        "en": "Green",
        "ar": "أخضر"
    }
')

此查询将返回

element_id | sequenceNo | parent_Id | Object_ID | Name | StringValue | ValueType
-----------+------------+-----------+-----------+------+-------------+-----------
1          | 0          | 1         | NULL      | en   | Green       | string
2          | 0          | 1         | NULL      | ar   | أخضر        | string
3          | 1          | NULL      | 1         | -    |             | object

如果表中的某个列是JSON文档,则可以使用CROSS APPLY

create table dbo.test(ID int identity(1,1) , json varchar(max))

insert into dbo.test (json)
select '  
    {
        "en": "Green",
        "es": "Verde"
    }
'

insert into dbo.test (json)
select '  
    {
        "en": "Red",
        "es": "Rojo"
    }


select * from dbo.test t
cross apply (select * from dbo.parseJSON(json)) details

这将返回以下输出:

enter image description here