我需要在查询中的动态json路径,这有可能吗?我可以使用json在SQL Server查询中设置动态路径吗?
我尝试:
CREATE FUNCTION [dbo].[GetValue]()
RETURNS @newTable TABLE (ColumnValue NVARCHAR(MAX))
AS
BEGIN
DECLARE @jsonURL NVARCHAR(MAX)
DECLARE @kek NVARCHAR(MAX)
DECLARE @kek2 NVARCHAR(MAX)
DECLARE @result NVARCHAR(MAX)
SET @jsonURL = N'$.glossary.title'
SELECT @kek = JSONValue
FROM [dbo].[jsobj]
SET @result = 'SELECT JSON_VALUE('[email protected]+', '[email protected]+')'
EXEC @kek2 = @result
INSERT INTO @newTable
SELECT @kek2
RETURN
END
当我把这个功能我收到此错误信息:
消息203,16级别,状态2,行2
名称“SELECT JSON_VALUE({ “Glossary”:{“title”:“example词汇表”, “GlossDiv”:{“title”:“S”,“GlossList”:{“GlossEntry”:{“ID”:“SGML”,“SortAs” “SGML”,“GlossTerm”:“标准通用标记语言”“缩写”:“SGML”,“缩写”:“ISO 8879:1986”,“GlossDef”:{“para”:“用于创建标记语言,如DocBook。“,”GlossSeeAlso“:[”GML“,”XML“]},”GlossSee“:”标记“}}}} } ,$ .glossary.title)”不是有效的标识符。
如果我使用一个代码,所有的好,但它没有,我需要 - 没有动态JSON网址
CREATE FUNCTION [dbo].[GetValue]()
RETURNS @newTable TABLE
(ColumnValue NVARCHAR(MAX))
AS
BEGIN
DECLARE @jsonURL NVARCHAR(MAX)
DECLARE @kek NVARCHAR(MAX)
DECLARE @kek2 NVARCHAR(MAX)
DECLARE @result NVARCHAR(MAX)
SET @jsonURL = N'$.glossary.title'
SELECT @kek = JSONValue FROM [dbo].[jsobj]
SELECT @kek2 = JSON_VALUE(@kek, N'$.glossary.title')
INSERT INTO @newTable
SELECT @kek2
RETURN
END
您确定JSON有效吗? –
@JacobH是的,它的工作,如果我用类似的东西:(“ $ glossary.title”“+ @ + KEK”,N) SELECT JSON_VALUE” 但它不动 – FancyFries
我想我得到了它。现在你的路径上没有单引号。将它们包含在你的SET中,看看是否修复它。 '...},$ .glossary.title)'应该是'...},'$ .glossary.title')' –