Помощь с функциями JSON в SQL Server 2016 - PullRequest
0 голосов
/ 07 марта 2019

У меня есть таблица SQL Server в следующем формате:

ID               int
JobParameters    nvarchar(max)

где столбец JobParameters содержит, например:

{
    "Parameters": [
        {
            "SID": 35,
            "RPYID": 10
        }, {
            "SID": 36,
            "RPYID": 10
        }, {
            "SID": 39,
            "RPYID": 10
        }, {
            "SID": 46,
            "RPYID": 10
        }, {
            "SID": 58,
            "RPYID": 10
        }, {
            "SID": 65,
            "RPYID": 10
        }, {
            "SID": 71,
            "RPYID": 10
        }, {
            "SID": 72,
            "RPYID": 10
        }, {
            "SID": 73,
            "RPYID": 10
        }, {
            "SID": 74,
            "RPYID": 10
        }, {
            "SID": 78,
            "RPYID": 10
        }, {
            "SID": 80,
            "RPYID": 10
        }, {
            "SID": 81,
            "RPYID": 10
        }, {
            "SID": 82,
            "RPYID": 10
        }, {
            "SID": 88,
            "RPYID": 10
        }, {
            "SID": 90,
            "RPYID": 10
        }, {
            "SID": 96,
            "RPYID": 10
        }, {
            "SID": 407,
            "RPYID": 10
        }, {
            "SID": 408,
            "RPYID": 10
        }
    ]
}

Мне нужно вставить SID и RPYID из JobParameters (JSON) в другую таблицу.

Таким образом, в основном необходимо эффективно преобразовать значение JSON, хранящееся в одной таблице, в два столбца в другой таблице.

1 Ответ

1 голос
/ 07 марта 2019

Использовать OPENJSON примерно так:

SELECT ID, j.SID, j.RPYID
FROM t
CROSS APPLY OPENJSON(JobParameters, '$.Parameters')
WITH (   
    SID int '$.SID',  
    RPYID int '$.RPYID'
) AS j

Демонстрация на db <> fiddle

...