Gib*_*Job 3 sql sql-server json json-value
JSON 存储在表中的“DataJson”列中
[{
"KickOffDate": "1-Jan-2019",
"TeamSize": "11",
"ClientEngineer": "Sagar",
"WaitingPeriod": "16.5"
}]
Run Code Online (Sandbox Code Playgroud)
询问
SELECT JSON_VALUE(DataJson,'$.KickOffDate') AS KickOffDate
, JSON_VALUE(DataJson,'$.ClientEngineer') AS ClientEngineer
FROM [ABC].[Deliver]
Run Code Online (Sandbox Code Playgroud)
结果
KickOffDate ClientEngineer
NULL NULL
Run Code Online (Sandbox Code Playgroud)
结果应该是:
KickOffDate ClientEngineer
1-Jan-2019 Sagar
Run Code Online (Sandbox Code Playgroud)
小智 8
你的sql查询是错误的。
您必须像下面这样更正查询。
SELECT JSON_VALUE(DataJson,'$[0].KickOffDate') AS KickOffDate ,JSON_VALUE(DataJson,'$[0].ClientEngineer') AS ClientEngineer FROM [ABC].[Deliver]
Run Code Online (Sandbox Code Playgroud)
存储在表中的数据不是 JSON 对象,而是 JSON 数组。
所以为了获取JSON Object的每个值,需要在JSON Array中设置JSON Object的索引。
否则,您可以将数据存储为 JSON 对象,然后您的查询就可以正常工作了。
您的 JSON 似乎格式错误,至少从 SQL Server 的 JSON API 的角度来看是这样。据我所知,如果您的 JSON 数据由顶级 JSON 数组组成,那么该数组需要有一个键名称,并且整个内容应该包含在{ ... }.
以下设置已经过测试并且有效:
WITH yourTable AS (
SELECT '{ "data" : [{"KickOffDate": "1-Jan-2019", "TeamSize": "11", "ClientEngineer": "Sagar", "WaitingPeriod": "16.5"}] }' AS DataJson
)
SELECT
JSON_VALUE(DataJson, '$.data[0].KickOffDate') AS KickOffDate,
JSON_VALUE(DataJson, '$.data[0].ClientEngineer') AS ClientEngineer
FROM yourTable;
Run Code Online (Sandbox Code Playgroud)
我使用的输入 JSON 如下所示:
{
"data" : [
{
"KickOffDate": "1-Jan-2019",
"TeamSize": "11",
"ClientEngineer": "Sagar",
"WaitingPeriod": "16.5"
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7956 次 |
| 最近记录: |