Как разобрать строку json в SQL Server 2012

У меня есть строковые данные json.

{ "salesremarks": { "InternalCode":0, "Remark":"" },
  "OTH": { "ZALO_DYN":"", "Payment_mode":"1", "Max_req_EIR":"55" }........

Есть ли способ проанализировать этот тип данных в SQL Server 2012?

Я использую для этого строковую функцию, но они тоже не работают

Вы уверены, что это версия MS SQL Server 2010?

Squirrel 20.09.2018 04:59

Вам действительно нужно анализировать содержимое JSON внутри базы данных?

Tim Biegeleisen 20.09.2018 05:00

Есть способ? да. Подходит ли SQL Server для синтаксического анализа строк? Нет.

Brian 20.09.2018 05:13

Извините всех. Я ошибся. Это точно Ms sql server 2012.

HongTu 20.09.2018 06:26

Если нет возможности проанализировать json до SQL 2016. Итак, как я могу разбить эту большую строку на основе некоторых ключевых слов для этой большой строки. Спасибо.

HongTu 20.09.2018 06:28

Я видел это некоторое время назад. Не было времени посмотреть, насколько хорошо это работает. simple-talk.com/sql/t-sql-programming/…

James L. 20.09.2018 06:32
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
6
1 190
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В SQL Server 2016 есть функции для его анализа, для предыдущих версий вам нужно будет анализировать его самостоятельно. Вот пример анализа ваших демонстрационных данных:

declare @STRING varchar(max);
declare @SalesRemarks_InternalCode varchar(256);
declare @SalesRemarks_Remark varchar(256);
declare @OTH_ZALO_DYN varchar(256);
declare @OTH_Payment_mode varchar(256);
declare @OTH_Max_req_EIR varchar(256);

set @STRING = '{ "salesremarks": { "InternalCode":0, "Remark":"" }, "OTH": { "ZALO_DYN":"", "Payment_mode":"1", "Max_req_EIR":"55" } }'

set @SalesRemarks_InternalCode = substring(@STRING, charindex('"InternalCode"', @STRING) + 15, charindex(',', substring(@STRING, charindex('"InternalCode"', @STRING) + 16, 8000)))    
set @SalesRemarks_Remark = substring(@STRING, charindex('"Remark"', @STRING) + 10, charindex('"', substring(@STRING, charindex('"Remark"', @STRING) + 10, 8000)) - 1)    
set @OTH_ZALO_DYN = substring(@STRING, charindex('"ZALO_DYN"', @STRING) + 12, charindex('"', substring(@STRING, charindex('"ZALO_DYN"', @STRING) + 12, 8000)) - 1)    
set @OTH_Payment_mode = substring(@STRING, charindex('"Payment_mode"', @STRING) + 16, charindex('"', substring(@STRING, charindex('"Payment_mode"', @STRING) + 16, 8000)) - 1)    
set @OTH_Max_req_EIR = substring(@STRING, charindex('"Max_req_EIR"', @STRING) + 15, charindex('"', substring(@STRING, charindex('"Max_req_EIR"', @STRING) + 15, 8000)) - 1)

select @SalesRemarks_InternalCode as SalesRemarks_InternalCode, @SalesRemarks_Remark as SalesRemarks_Remark, @OTH_ZALO_DYN as OTH_ZALO_DYN, @OTH_Payment_mode as OTH_Payment_mode, @OTH_Max_req_EIR as OTH_Max_req_EIR

Результат :

+---------------------------+---------------------+--------------+------------------+-----------------+
| SalesRemarks_InternalCode | SalesRemarks_Remark | OTH_ZALO_DYN | OTH_Payment_mode | OTH_Max_req_EIR |
+---------------------------+---------------------+--------------+------------------+-----------------+
| 0                         |                     |              | 1                | 55              |
+---------------------------+---------------------+--------------+------------------+-----------------+

Другие вопросы по теме