我想从SQL Server 2012中读取Json数据,我知道它将支持在SQL Server 2016中读取Json数据,但我现在需要一种解决方法来阅读它。
我有一个带有这个Json代码的列Text
:
{"en": "Green", "ar": "أخضر"}
我想要一个过程或函数给它语言前缀并将值返回给我。
答案 0 :(得分:6)
如果您在SQL Server 2012中寻找表格和表格到JSON的通用SQL Server JSON,则此article提供parseJSON
和dbo.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
这将返回以下输出: