将值= NULL的新密钥添加到现有JSON对象

时间:2019-11-25 19:01:55

标签: sql json sql-server tsql

我有以下简单的JSON对象:

{
    "application": {
        "status": "XXX"
    }
}

我想在名为“ approve_date”的应用程序下添加一个新键,并且希望该值为NULL。有没有办法用JSON_MODIFY来做到这一点。我尝试在路径中使用“附加”,但这添加了一个数组,而不是键(下面的示例)。

JSON_MODIFY(data, 'append $.application.approve_date', null)

(A)向JSON添加新密钥并(B)将其设置为NULL值的更好方法是什么?

1 个答案:

答案 0 :(得分:1)

NULL的行为随模式而异,因此,一个技巧是将JSON_MODIFY与宽松(添加密钥)和严格模式(用于将vale设置为null)。

SELECT
    JSON_MODIFY(
        JSON_MODIFY(
            '{"application":{"status":"XXX"}}',
            '$.application.approve_date',
            ''
        ), -- {"application":{"status":"XXX","approve_date":""}}
        'strict $.application.approve_date',
        NULL
    ) -- {"application":{"status":"XXX","approve_date":null}}