2016-07-04 2 views
-1

У меня есть таблица, которая содержит столбец с данными JSONПолучение значения из Json в SQL Server

[ 
{"Name":"Territory","Value":"1000000002"},{"Name":"Village","Value":"Bahaibalpur"}, 
{"Name":"Activity Date","Value":"2016-6-15 5:30:0"}, 
{"Name":"Start Time","Value":"16:37"}, 
{"Name":"End Time","Value":"17:38"}, 
{"Name":"Duration","Value":"1hrs 1 mins"} 
] 

. Я хочу получить значение Начального времени и значение времени окончания внутри функции.

+0

Как хранятся значения? В столбце varchar? – Madhivanan

+0

да мадхиванам. –

+0

Сервер Sql 2016 поддерживает JSON. до этого это всего лишь манипуляция строк или преобразование json в xml или в нормализованную структуру. –

ответ

1

Попробуйте этот путь

declare @t table(col varchar(1000)) 
insert into @t(col) 
select '[{"Name":"Territory","Value":"1000000002"},{"Name":"Village","Value":"Bahaibalpur"}, 
{"Name":"Activity Date","Value":"2016-6-15 5:30:0"}, 
{"Name":"Start Time","Value":"16:37"}, 
{"Name":"End Time","Value":"17:38"}, 
{"Name":"Duration","Value":"1hrs 1 mins"}]' 

select 
substring(col,charindex('Start Time',col)+21,5) as start_time, 
substring(col,charindex('end Time',col)+19,5) as end_time 
from @t 
+0

его работает, но это их способ, которым я могу получить динамически, без использования подстроки. Если значение равно «1.37», его нарушение. –

+0

имя столбца BasicField, которое содержит данные json –

0

Вы не заявить, какая версия SQL вы используете, 2016 год имеет встроенную функциональность (https://msdn.microsoft.com/en-us/library/dn921897.aspx)

В противном случае, есть классная статья на разбор JSON с TSQL, который вы можете прочитать here.

Другой вариант - использовать функцию CLR.

Смежные вопросы