我想创建一个函数,只有当json-array不存在时才会为json-array增加值。我写了一个函数
CREATE FUNCTION dbo.JSON_ARRAY_APPEND (@json nvarchar(max), @arr nvarchar(max), @value nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
IF NOT EXISTS (SELECT * FROM OPENJSON(@json,@arr) WHERE [value] = @value)
SET @json=JSON_MODIFY(@json,'append '+@arr,@value)
RETURN @json
END
但我收到了错误
消息102,级别15,状态1,过程JSON_ARRAY_APPEND,第5行[批处理 开始第6行]'@arr'附近的语法不正确。
我知道这是因为我将路径作为变量@arr
传递给OPENJSON如何以正确的方式做到这一点?感谢
答案 0 :(得分:1)
我这样做了
CREATE FUNCTION dbo.JSON_ARRAY_APPEND (@json nvarchar(max), @arr nvarchar(max), @value nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
IF NOT EXISTS (SELECT * FROM OPENJSON(@json) WHERE [value] = @value AND [key] = RIGHT(@arr,LEN(@arr)-2))
SET @json = JSON_MODIFY(@json,'append '+@arr,@value)
RETURN @json
END
GO