Как вставить текст json в один из столбцов таблицы в sql server

#json #sql-server

#json #sql-сервер

Вопрос:

У меня есть json-код, в котором я пытаюсь получить выходные данные. Итак, в одном из столбцов в моем коде, таком как «RETURN_MESSAGE», значение равно json …итак, я пытаюсь получить значение в столбце return_message при запуске запроса select, но он выдает мне null. Итак, как я могу получить текст в формате json, который находится внутри «RETURN_MESSAGE» .Кто-нибудь может мне помочь в этом, пожалуйста

 declare @json varchar(max) ='[
                                            {
                                            "SP_NAME":"test"
                                            ,"KEY":"a39a"
                                            ,"EXEC_ID":4857
                                             ,"RETURN_MESSAGE":{
"d":{
"Key":"e77d83af-2827-447c-8b98-46c9e9d0a39a"
,"reqCountLimit":0
,"reqFormat":"JSON"
,"reqExecutionMode":"B"
,"srcExtid":284
,"tgtExtId":4857
,"srcTableName":"KDP_STG_SAP_CSKS"
,"SourceSchema":"QCDC1"
,"serviceId":"1001"
,"reqBatchRecCount":15000
,"compressedFlag":"Y"
,"mDataFlag":"Y"
,"reqDeltaFromUTC":"0000-00-00T00: 00: 00"
,"reqExtMode":"F"
,"reqStatusType":"S"
,"reqStatus":"Successfully Batch Job Started !!!"
,"OBJECT_MDATA":{
"results":[
{
"Fieldname":"KDP_TABKEY"
,"Datatype":"CHAR"
,"Length":78
}
,{
"Fieldname":"KDP_CHNGIND"
,"Datatype":"CHAR"
,"Length":1
}
]
}
,"DELTA_CONFIG":[
]
}
}
 }]'

   SELECT * FROM OPENJSON(@json) with(SP_NAME varchar(50),KEY varchar(255),EXEC_ID int,RETURN_MESSAGE varchar(max))

  

вывод

 sp_name   key   exec_id   RETURN_MESSAGE
test      a39a    4857       NULL

  

Ответ №1:

Вы можете попробовать следующий запрос.

 SELECT * FROM OPENJSON(@json) 
WITH(SP_NAME VARCHAR(50),KEY VARCHAR(255),EXEC_ID INT,RETURN_MESSAGE NVARCHAR(MAX) AS JSON)