Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Term Member Откуда: Сообщений: 284 |
Добрый день всем! Подскажите пожалуйста Есть табличка вида: Create table Tab( c_id int, c_json varchar(max) ) в ней данные, предположим такие с_id - 5 c_json - {"FIO": "Mike", "age": "30"} если делаю запрос вида select * from Tab for json auto то строка c_json получается такого вида {\"FIO\": \"Mike\", \"age\": \"30\"} как нужно составить запрос чтоб результат получился такого вида: [{ "c_id": "5", "c_jason": { "FIO": "Mike", "age": "30" } }] |
7 дек 17, 17:52 [21016075] Ответить | Цитировать Сообщить модератору |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
Из известных мне способов пока есть такой вариант:DECLARE @t TABLE (c_id int, c_json VARCHAR(MAX)) INSERT INTO @t SELECT 5, '{"FIO": "Mike", "age": "30"}' SELECT c_id , c_json = ( SELECT FIO = JSON_VALUE(c_json, '$.FIO') , age = JSON_VALUE(c_json, '$.age') FOR JSON PATH ) FROM @t FOR JSON PATH либо извраты с REPLACE: DECLARE @t TABLE (c_id int, c_json VARCHAR(MAX)) INSERT INTO @t VALUES (5, '{"FIO": "Mike", "age": "30"}') , (6, '{"FIO": "Dick", "age": "32"}') SELECT REPLACE((SELECT c_id, c_json = 'xxx' FOR JSON PATH), '"xxx"', c_json) FROM @t второй более производительный в некоторых случаях бывает |
7 дек 17, 18:26 [21016162] Ответить | Цитировать Сообщить модератору |
Cammomile Member Откуда: Сообщений: 1214 |
Качаешь dbo.parseJSON вот от сюда: https://www.red-gate.com/simple-talk/sql/t-sql-programming/consuming-json-strings-in-sql-server/ Радуешься тому, что все уже сделали за тебя. |
7 дек 17, 18:54 [21016260] Ответить | Цитировать Сообщить модератору |
Cammomile Member Откуда: Сообщений: 1214 |
А, тебе не парсить, а рисовать. Тогда вот эта статья https://www.red-gate.com/simple-talk/sql/t-sql-programming/producing-json-documents-from-sql-server-queries-via-tsql/ |
7 дек 17, 19:00 [21016285] Ответить | Цитировать Сообщить модератору |
Term Member Откуда: Сообщений: 284 |
Благодарю всех за ответы! |
8 дек 17, 00:28 [21016922] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |