我有一個表,其中包含我需要從中檢索資料的三列。OtherNames 列之一包含一個 Json 物件陣列。
CREATE TABLE Persons (
NameID int,
CurrentName varchar(255),
OtherNames varchar(max),
);
我可以很好地查詢該列,但是如何通過 ID 將它與它所在的表連接起來,以便我可以檢索表上的所有資訊以及與該行相關的內容。
DECLARE @test VARCHAR(MAX)
SELECT @test = '[{"Name":"Bob","DateTime":"03/03/2022"},{"Name":"Adam","DateTime":"04/05/2022"}]'
SELECT * FROM OPENJSON(@test)
WITH (
Name VARCHAR(MAX) '$.Name',
DateTime VARCHAR(MAX) '$.DateTime'
)
以上結果導致
Bob 03/03/2022
Adam 04/05/2022
如何加入以顯示 NameID 和 CurrentName?
NameID Name DateTime CurrentName
1 Bob 03/03/2022 Rob
1 Adam 04/05/2022 Rob
可能有多個記錄和多個 Json 資料..
uj5u.com熱心網友回復:
正如我在評論中提到的,OPENJSON對列使用,而不是標量變數,它只包含你的一個行的值,而不包含其他行資料。
SELECT P.NameID,
ONs.[Name],
ONs.[DateTime],
P.CurrentName
FROM dbo.Persons P
CROSS APPLY OPENJSON(P.OtherNames)
WITH ([Name] varchar(255),
[DateTime] date) ONs;
請注意,由于您的值[DateTime]取決于文化,您可能需要將其定義為varchar(10)中的a WITH,然后使用樣式代碼將CONVERT其定義為date中的a 。SELECT
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460712.html
上一篇:如何在沒有列名且只有1行資料的情況下透視/取消透視資料
下一篇:短路表
