これは私が宣言するjsonです:
DECLARE @json VARCHAR(MAX) = N'
[
{
"mTruckId": -35839339,
"mPositionId": 68841545,
"mPositionDateGmt": "laboris ipsum ullamco",
"mLatitude": -36598160.205007434,
"mLongitude": 54707169.834195435,
"mGpsValid": false,
"mHeading": 114,
"mSpeed": -888256.4982997179,
"mAdditionalInformation": {
"mVin": "voluptate veniam",
"mOdometer": 25567959.615529776,
"mEngineHours": -87509827.08880372,
"mTemperatureSensors": [
{
"mUnit": "C",
"mLabel": "aute in",
"mValue": -74579140.64111689
},
{
"mUnit": "C",
"mLabel": "ullamco labore dolore",
"mValue": -91870052.84894001
}
]
}
},
{
"mTruckId": 80761376,
"mPositionId": 88380593,
"mPositionDateGmt": "sed pariatur ut sint",
"mLatitude": 62504812.42302373,
"mLongitude": 14622406.17103973,
"mGpsValid": false,
"mHeading": 302,
"mSpeed": 39030054.634676635,
"mAdditionalInformation": {
"mVin": "aute",
"mOdometer": 74400412.05641022,
"mEngineHours": 88453976.08453897,
"mTemperatureSensors": [
{
"mUnit": "F",
"mLabel": "reprehenderit consectetur id ipsum",
"mValue": 22634605.53841141
},
{
"mUnit": "C",
"mLabel": "magna consectetur esse",
"mValue": 72633803.44269562
}
]
}
}
]'
これは、json から温度センサー データを抽出するための私のコードです。温度センサー データを取得するためのこの json の階層は root -> mAdditionalInformation -> mTemperatureSensors であるため、うまくいくと思いました。
SELECT Unit,
Label,
Value
FROM OPENJSON(@json)
WITH(
Unit VARCHAR(15) '$.mAdditionalInformation.mTemperatureSensors.mUnit',
Label VARCHAR(50) '$.mAdditionalInformation.mTemperatureSensors.mLabel',
Value FLOAT '$.mAdditionalInformation.mTemperatureSensors.mValue'
)
そして、両方ともnullである2行を返しますが、なぜこれを行うのですか? mTemperatureSensors データの各要素を取得したい。
Unit Label Value
NULL NULL NULL
NULL NULL NULL