【问题标题】:How to read JSON data from SQL Server? [duplicate]如何从 SQL Server 读取 JSON 数据? [复制]
【发布时间】:2018-04-13 17:55:19
【问题描述】:

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

我有一列 Text 包含此 Json 代码:

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

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

【问题讨论】:

    标签: sql sql-server json


    【解决方案1】:

    如果您在 SQL Server 2012 中寻找通用的 SQL Server JSON to Table 和 Table to 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
    

    这将返回以下输出:

    【讨论】:

    • 谢谢 :) 我不想要有 Json 字符串并返回表的函数,我想要更简单的东西。示例函数 ( lang_prefix){ select [Text] from MyTable ..... 如果 lang_prefix 为 'en',此处代码返回例如 'Green'}
    • 如果表的其中一列的字符串值为 JSON 。我该怎么办?
    • @KevinBurton,我已经更新了我的答案,以显示当表的字符串值为 JSON 时的示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多