TransWikia.com

Как вытянуть из JSON значение

Stack Overflow на русском Asked on December 14, 2021

Есть таблица с колонками CustomerID и Info.

Пример содержимого Info по пользователю 17:

[{"Key":"ErrorCode","Value":"16734}, {"Key":"DocumentNationality","Value":null},
{"Key":"DocumentAddress","Value":null} ]

Мне нужно создать таблицу с колонками CustomerID и ErrorCode. То есть в итоге по этому пользователю будет строка:

CustomerID      ErrorCode
   17             16734

Подскажите, как это можно сделать?

One Answer

Была лишняя двойная кавычка рядом с 16734. Я должен был удалить ее, чтобы сделать JSON правильным.

SQL

-- DDL and sample data population, start
DECLARE @tbl TABLE (CustomerID INT PRIMARY KEY, Info NVARCHAR(MAX));
INSERT INTO @tbl (CustomerID, Info) VALUES
(17, N'[{"Key":"ErrorCode","Value":16734}, {"Key":"DocumentNationality","Value":null}, {"Key":"DocumentAddress","Value":null} ]');
-- DDL and sample data population, end

;WITH rs AS
(
    SELECT t.CustomerID, [Key], [Value] AS ErrorCode
    FROM @tbl AS t
       CROSS APPLY OPENJSON(t.Info)
        WITH (   
                      Value   VARCHAR(200)   '$.Value',  
                      [Key]   VARCHAR(200)   '$.Key'
        )
)
SELECT CustomerID, ErrorCode
FROM rs
WHERE [Key] = 'ErrorCode';

результат

+------------+-----------+
| CustomerID | ErrorCode |
+------------+-----------+
|         17 |     16734 |
+------------+-----------+

Answered by Yitzhak Khabinsky on December 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP