sql - 从表中选择 JSON_VALUE 返回 null 而不是值

标签 sql json sql-server json-value

JSON 存储在表中的“DataJson”列中

[{
    "KickOffDate": "1-Jan-2019",
    "TeamSize": "11",
    "ClientEngineer": "Sagar",
    "WaitingPeriod": "16.5"
}]

询问
SELECT JSON_VALUE(DataJson,'$.KickOffDate') AS KickOffDate
     , JSON_VALUE(DataJson,'$.ClientEngineer') AS ClientEngineer
FROM [ABC].[Deliver]

结果
KickOffDate   ClientEngineer
NULL          NULL

结果应该是:
KickOffDate   ClientEngineer
1-Jan-2019    Sagar

最佳答案

你的sql查询是错误的。
您必须像下面这样更正查询。

 SELECT JSON_VALUE(DataJson,'$[0].KickOffDate') AS KickOffDate ,JSON_VALUE(DataJson,'$[0].ClientEngineer') AS ClientEngineer FROM [ABC].[Deliver]

存储在表中的数据不是 JSON 对象,而是 JSON 数组。
所以为了获取JSON Object的每个值,需要在JSON Array中设置JSON Object的索引。
否则,您可以将数据存储为 JSON 对象,然后您的查询就可以正常工作了。

关于sql - 从表中选择 JSON_VALUE 返回 null 而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54075931/

相关文章:

json - JSONPath 中的 OR 运算符?

mysql - SQL - 最佳方式[期初期末余额]

php - 如何将多个选定的行值从其他表插入到新表

c# - 命名空间 'Management' 中不存在类型或命名空间名称 'Microsoft.SqlServer' - SqlParser 和 VSTS 自动构建

java - 基于 JDBC 的 HSQLDB : execute SQL statements in batch

php - php中的分页限制数据但不显示在下一页中

php - 在 PHP 中将 2 个不同表中的 1 列匹配在一起

json - 有没有办法像比特币 block 的存储格式一样读取 .dat 文件?

sql - 如何从 SQL Server 数据库可视化 nvarchar(max) 的值,其中 max>65535?

javascript - 语法错误 : Unexpected token o in JSON at position 1