从JSON数组中提取JSON_VALUE

oknwwptz  于 2022-10-22  发布在  其他
关注(0)|答案(1)|浏览(267)

如果我们只有一个对象,这就很好了:
SELECT JSON_VALUE('{"Name": "Test"}', '$.Name');输出:测试
如何在MS SQL中从json数组获取每个Name属性?
SELECT JSON_VALUE('[{"Name": "Test"},{"Name": "Test2"}]', '$.Name');预期输出:2行,Test和Test2

lf3rwulv

lf3rwulv1#

因为您希望作为输出you'll need to use OPENJSON (maybe with CROSS APPLY)而不是标量函数(如JSON_VALUE)。

如果JSON位于标量T-SQL变量或参数(例如@jsonText)中,则可以执行以下操作:

DECLARE @jsonText nvarchar(max) = N'[{"Name": "Test"},{"Name": "Test2"}]';

SELECT
    j."Name"
FROM
    OPENJSON( @jsonText ) WITH (
        "Name" nvarchar(256) '$.Name'
    ) AS j;


小时

如果它位于表列中,请使用CROSS APPLY,如下所示:

DECLARE @t TABLE (
    JsonBlargh nvarchar(max) NOT NULL
);

INSERT INTO @t ( JsonBlargh ) VALUES
( N'[{"Name": "Test"},{"Name": "Test2"}]' ),
( N'[{"Name": "Test3"},{"Name": "Test4"}]' ),
( N'[{"Name": "Test5"},{"Name": "Test6"}]' );

-----------

SELECT
    j."Name"
FROM
    @t AS t
    CROSS APPLY OPENJSON( t.JsonBlargh/*, '$.Name'*/ ) WITH (
        "Name" nvarchar(256) '$.Name'
    ) AS j


小时

相关问题