我有一個資料庫表,我需要從感興趣的列有 json 的地方提取資料。讓這變得特別困難的是 json 的最外層元素是 '[' & ']' 因為在父元素中是一個陣列。我需要獲取與鍵“名稱”關聯的值(在本例中為“MS220”)。但是,我無法正確找到我想要的密鑰。
下JData表是我需要執行提取的資料的副本。在SELECT OPENJSON,等之間JSON_VALUE,JSON_QUERY如何檢索我正在尋找的值?
以下是我嘗試過但不太了解的幾個選擇。
CREATE TABLE JData
(
JsonData nvarchar(max)
)
INSERT INTO JData (JsonData)
VALUES
('[
{
"Categories": [
{
"QuerySourceNames": [
"QAsset"
],
"Id": "eceae85a-ffc6-49f4-8f6a-78ce2b4b274e",
"Name": "emsdba"
}
],
"Id": "525b4f07-0f67-43ac-8070-a0e6c1ceb1b9",
"Name": "MS220"
}
]')
SELECT *
FROM OPENJSON (JData,'$.[0]')
WITH (
[Name] varchar(10) '$.Name'
)
SELECT
JSON_VALUE(JData,'$') as v
@AaronBertrand:我不得不稍微修改一下答案,因為該表也有一個標有 [name] 的列。有沒有辦法將 ParamName 更新為新值?
SELECT
t.[Name],
ParamName
FROM
[myDB].[dbo].[myTable] t
CROSS APPLY
OPENJSON (t.params)
WITH
(
Categories nvarchar(max) AS json,
Id uniqueidentifier,
ParamName varchar(10) '$.Name'
);
uj5u.com熱心網友回復:
SELECT Name FROM dbo.JData
CROSS APPLY OPENJSON (JsonData)
WITH
(
Categories nvarchar(max) AS json,
Id uniqueidentifier,
[Name] varchar(10)
);
- 示例db<>fiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441784.html
