我需要在查詢中的動態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')' –