#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)