标签: json-value

如何修复 SQL Server Json 文本格式不正确的问题。在位置 151 发现意外字符

我正在处理一个具有 JSON 格式列的表,我想从该列中提取坐标值。

所以我运行以下代码:

Select *,JSON_VALUE(field,'$."Coordinate-X"[0]') As coordinate INTO TABLE_1 FROM table
WHERE JSON_VALUE(field,'$."Coordinate-X"[0]') IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

运行5分钟后出现以下错误

消息 13609,级别 16,状态 1,第 27 行 Json 文本格式不正确。在位置 151 处发现意外字符“”。

当我尝试检查一些前 200 * 以下的行时,代码返回结果,没有任何错误

Select TOP 200 *,JSON_QUERY(field,'$."Coordinate-X"[0]') As coordinate FROM table
WHERE JSON_VALUE(field,'$."Coordinate-X"[0]') IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

我想我有一行导致了错误,但我不知道如何识别它或排除该行并返回结果。

sql json-query json-value

8
推荐指数
1
解决办法
2万
查看次数

将 Vimscript 字典导出为 JSON

我找到了一个可以让 Vim 解析 JSON 的插件。我需要将 VimScript 字典导出为 JSON。目前我只是使用:

let str = string(dict)
substitute(str, "'", '"', 'g')
Run Code Online (Sandbox Code Playgroud)

这是可行的,但当我遇到带有嵌入引号的字典时,它肯定会中断。有什么更好的办法呢?

vim json json-value

7
推荐指数
2
解决办法
1810
查看次数

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

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)

sql sql-server json json-value

3
推荐指数
2
解决办法
7956
查看次数

SQL Server 解析 JSON 以更新另一个表

我在其中一列中有一个包含 JSON 数据的表,我正在尝试解析 JSON 数据并插入到临时表中

DECLARE @TEMPTABLE
( 
     ID INT, 
     Status NVARCHAR(50), 
     Cost DECIMAL(20, 0)
)


INSERT INTO @TEMPTABLE
    SELECT 
        ID, 
        JSON_VALUE(mydata, '$.Status') AS Status,
        JSON_VALUE(mydata, '$.Cost') AS Cost 
    FROM Expense
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

将数据类型 nvarchar 转换为数字时出错

如果我注释掉该Cost列,同样可以正常工作。

成本表中的示例 JSON 数据

 | ID | mydata 
 +----+-------------------------------------
 | 1  | {"Status":"Shipped","Cost":"$10.50"}
Run Code Online (Sandbox Code Playgroud)

sql sql-server json sql-server-json json-value

2
推荐指数
1
解决办法
77
查看次数

“JSON_VALUE 或 JSON_QUERY”的参数 2 必须是字符串文字

我将此 JSON 传递给 SQL Server 中的存储过程

{
    "individual": [
        {
            "app_id": 1057029,
            "size": 2
        },
        {
            "app_id": 1057053,
            "size": 3
        },
        {
            "app_id": 1057048,
            "size": 1
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在存储过程中,我提取app_id和的值size,如下所示

SET @len = JSON_VALUE(@json, CONCAT('$.individual[', @i, '].size'));
SET @appId = JSON_VALUE(@json, CONCAT('$.individual[', @i, '].app_id'));
Run Code Online (Sandbox Code Playgroud)

(这里i是索引变量在循环中递增)

这在 Microsoft SQL Server 2017(版本 14.0.1000.169)上完美运行

但在 Microsoft SQL Server 2016(版本 13.0.4604.0)上,我收到错误:

JSON_Value 错误:“JSON_VALUE 或 JSON_QUERY”的参数 2 必须是字符串文字

请注意,这不是重复的,因为我已经在下面提到了问题,但仍然没有得到解决方案。

JSON_Value 错误:“JSON_VALUE 或 JSON_QUERY”的参数 2 必须是字符串文字

SQL Sever 2016 - …

sql-server json sql-server-2016 json-value

-1
推荐指数
1
解决办法
1101
查看次数