Вы можете попробовать следующий подход, используя предложения OPENJSON()
и WITH
(чтобы указать столбцы и их типы).Без WITH
предложение OPENJSON
возвращает три столбца - key
, value
и type
каждой пары {key: value}
.
Ввод
CREATE TABLE #Table (
RelatedPolimorphicId int,
[Key] nvarchar(50),
[Value] varchar(max)
)
INSERT INTO #Table
(RelatedPolimorphicId, [Key], [Value])
VALUES
(23, N'ContentStats', N'{"BrandPresent": true, "OneImage": true, "UPCPresenet": true, "ModelNumberPresent": true, "TitlePresent": true, "DescriptionPresent": true, "Feature1Present": true}')
Оператор
SELECT
t.RelatedPolimorphicId,
j.*
FROM #Table t
CROSS APPLY (
SELECT *
FROM OPENJSON(t.[Value])
WITH (
BrandPresent varchar(10) '$.BrandPresent',
OneImage varchar(10) '$.OneImage',
UPCPresenet varchar(10) '$.UPCPresenet',
ModelNumberPresent varchar(10) '$.ModelNumberPresent',
TitlePresent varchar(10) '$.TitlePresent',
DescriptionPresent varchar(10) '$.TitlePresent',
Feature1Present varchar(10) '$.Feature1Present'
)
) j
Выход
RelatedPolimorphicId BrandPresent OneImage UPCPresenet ModelNumberPresent TitlePresent DescriptionPresent Feature1Present
23 true true true true true true true