使用SQL解析JSON(OPENJSON)

时间:2017-09-29 08:51:24

标签: sql json

您可以下载Google搜索,它们以多个JSON文件的形式出现。我正在尝试使用SQL函数OPENJSON将它们解析为[TimeStamp]和[Query Text]列[/ p>

DECLARE @json as nvarchar(max)

SET @json = N'{"event":[{"query":{"id":[{"timestamp_usec":"1329003091748889"}],"query_text":"download google searches"}}]}'

SELECT * FROM OPENJSON(@json, N'$.event')
WITH (   
      [TimeStamp] nvarchar(max) N'$.query.timestamp_usec'   ,
      [QueryText]   nvarchar(max) N'$.query.query_text'   
)

查询文本返回结果,但时间戳只读取NULL。我做错了什么?

1 个答案:

答案 0 :(得分:7)

您的代码中存在小故障。

示例Json

{
    "event": [{
        "query": {
            "id": [{
                "timestamp_usec": "1506676658"
            }],
            "query_text": "download google searches"
        }
    }]
}

如果您采样json timestamp_usec 位于 id 数组内,那么为了从中获取数据,您需要对查询进行一些小修改,如下所示

DECLARE @json as nvarchar(max)

SET @json = N'{"event":[{"query":{"id":[{"timestamp_usec":"1506676658"}],"query_text":"download google searches"}}]}'

SELECT * FROM OPENJSON(@json, N'$.event')
WITH (   
      [TimeStamp] nvarchar(max) N'$.query.id[0].timestamp_usec'   ,
      [QueryText]   nvarchar(max) N'$.query.query_text'   
)