解析 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
我有这个 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