解析 table 中的 JSON 与多个 id

Parse JSON in table with multiple ids

我有这个 JSON 数组,它存储在名为 [json] 的 SQL 服务器 table 列中。 table只有这一栏。

CREATE TABLE MyTable (
  [json] nvarchar(200)
);

INSERT INTO MyTable 
VALUES('[{"Id":1},{"Id":2},{"Id":3}]');

db<>fiddle here

我需要的输出:使用 SELECT 语句在同一列下的单独行中的每个 Id:

Id (column name)
----------------
1
2
3

我尝试了什么:

SELECT JSON_VALUE([json], '$.Id') as Id
FROM table

但是结果是空的:

Id   
--------
null

使用带有 WITH 的 OpenJson 来识别您要检索的对象非常简单

declare @json  NVarChar(2048) = N'[{"Id":1},{"Id":2},{"Id":3}]';
SELECT * FROM OpenJson(@json)
WITH (ID INT '$.Id');

您可以像这样将 OPENJSON 与 JSON_VALUE 一起使用:

CREATE TABLE MyTable (
  [json] nvarchar(200)
);


INSERT INTO MyTable VALUES ('[{"Id":1},{"Id":2},{"Id":3}]'), ('[{"Id":1},{"Id":2},{"Id":3}]')


SELECT JSON_VALUE(a.[Value], '$.Id') Id 
FROM MyTable f
CROSS APPLY OPENJSON (f.[json]) a