【问题标题】:SQL Query into Json DataSQL 查询到 Json 数据
【发布时间】:2023-03-29 17:35:01
【问题描述】:

我有一个有很多列的表。一列的json值类似于

{
  "RequiredForCompany":1, 
  "RequiredOnScreen":0,
  "Editable":[],
  "Visible":[], 
  "Expression":{},
  "GroupFields":[142,156]
}

我想通过选择其他列来查询这个 json 值。我的查询就像

SELECT 
    [Name],
    JSON_VALUE(FieldAttributes, '$.GroupFields') AS GroupFields
FROM 
    [std].[Field]

但它为 groupfields 返回 null。有什么方法可以查询到这个值?

【问题讨论】:

标签: sql sql-server-2017 json-query


【解决方案1】:

您的 GroupFields (array) 是序列值容器,这就是您必须选择如下所示的原因

DECLARE @jsonInfo1 NVARCHAR(MAX) =N'{
"RequiredForCompany":1,
"RequiredOnScreen":0,
"Editable":[], 
"Visible":[],
"Expression":{},
"GroupFields":[142,156]

}';


select JSON_VALUE(@jsonInfo1, '$.GroupFields[0]') as g;

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=7eba8bf042a27253440ce4b41f440979

所以你的情况

SELECT [Name],
  JSON_VALUE(FieldAttributes,'$.GroupFields[0]') AS GroupFields
FROM [std].[Field]

【讨论】:

  • @Md.AbdulAlim dbfiddle.uk/… 你能检查一下这个链接吗
  • 我想将所有数据放入 GroupFields 中,而不仅仅是第一个值。怎么可能?
  • @Md.AbdulAlim dbfiddle.uk/… 检查此链接中的第二个查询
  • 感谢您的帮助。我通过使用您的流程得到了解决方案
  • 您的回答很有帮助,但并不完整。我投票给你的答案。
【解决方案2】:

在@Zaynul Abadin Tuhin 的帮助下,我终于找到了解决方案。我的查询是

SELECT [Name], STUFF((SELECT ','+[Value] FROM 
  OPENJSON (FieldAttributes,'$.GroupFields') FOR XML PATH ('')),1,1,'') AS GroupFields
FROM [std].[Field]

一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2019-11-29
    • 2020-08-04
    • 2014-02-23
    • 2015-03-21
    • 1970-01-01
    相关资源
    最近更新 更多