我有一個 JSON 字串,如下所示:
{"value": [
{
"AEDAT": "20211110"
},
{
"AEDAT": "20211110"
},
{
"AEDAT": "20211110"
},
{
"AEDAT": "20211112"
},
{
"AEDAT": "20211112"
},
{
"AEDAT": "20211112"
}
]};
現在我想在 SQL Server 中使用讀取這個 JSONOPENJSON()并找到每個AEDAT.
為此,我遵循以下查詢:
DECLARE @json nvarchar(max)
SET @json = '{"value": [
{
"AEDAT": "20211110"
},
{
"AEDAT": "20211110"
},
{
"AEDAT": "20211110"
},
{
"AEDAT": "20211112"
},
{
"AEDAT": "20211112"
},
{
"AEDAT": "20211112"
}
]}';
SELECT MAX(value) FROM OPENJSON(@json, '$.value')
上面的查詢回傳一行鍵值對如下:
{"AEDAT":"20211112"}
我的目標是只獲得20211112整數。
如何實作這一目標?
uj5u.com熱心網友回復:
如果要將最大值作為整數,則需要使用OPENJSON()顯式模式(WITH帶有列定義的子句)。此架構取決于決議的 JSON 的結構(在您的情況下,它是一個 JSON 陣列):
SELECT MAX(AEDAT) AS MaxAEDAT
FROM OPENJSON(@json, '$.value') WITH (
AEDAT int '$.AEDAT'
)
如果決議的值是日期,您可以嘗試不同的陳述句:
SELECT MAX(TRY_CONVERT(date, AEDAT, 112)) AS MaxAEDAT
FROM OPENJSON(@json, '$.value') WITH (
AEDAT varchar(8) '$.AEDAT'
)
uj5u.com熱心網友回復:
OPENJSON沒有顯式架構,為您提供值列,在您的示例中,該列將包含一個物件,例如{"AEDAT": "20211110"}type = 5。JSON_VALUE在該物件上使用:
select max(cast(json_value(j.value, '$.AEDAT') as int))
from openjson(@json, '$.value') as j
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361947.html
