如何从SQL Server读取JSON数据?

5
我希望能够从SQL Server 2012中读取Json数据,我知道在SQL Server 2016中有支持Json数据读取的功能,但是现在我需要一种解决方法来读取它。
我有一个名为Text的列,其中包含了以下Json代码:
{"en": "Green", "ar": "أخضر"}

我需要一个过程或函数,它可以给我语言前缀,并返回相应的值。
1个回答

6
如果您正在寻找一种通用的 SQL Server JSON 转换为表格和表格转换为 JSON 的方法,本文提供了一个名为 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文档,您可以使用:
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

这将返回以下输出:

在此输入图像描述


我不想要一个带有Json字符串并返回表格的函数,我想要更简单的东西。 例如: function (lang_prefix){ select [Text] from MyTable ..... 这里是代码,如果lang_prefix是'en',则返回'Green' } - Duha
如果表的某一列具有JSON字符串值,我该怎么办? - Kevin Burton
@KevinBurton,我已经更新了我的答案,展示了当表格具有JSON字符串值时的示例。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接