私は動的なjsonパスでクエリに必要です、それは可能ですか?SQL Serverで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]
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を({ "GlossDiv":{"タイトル": "S"、 "GlossList":{"GlossEntry":{"ID": "SGML"、 "SortAs": "用語集" "SGML"、 "GlossTerm": "標準化されたマークアップ言語" "略語:" "SGML"、 "略語": "ISO 8879:1986"、 "GlossDef":{"para": "メタマークアップLAN DocBookなどのマークアップ言語の作成に使用されています。 "、" GlossSeeAlso ":[" GML "、" XML "]}、" GlossSee ":"マークアップ "}}} } 、$ .glossary.title)"有効な識別子ではありません。
私は、次のコードを使用していないすべて大丈夫、それは私が必要であることをしないなら - 動的なJSONのURLを
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ええと、そういうものを使っているとうまくいきます: JSON_VALUE( '+ @ kek +'、N '$ glossary.title') ' しかし、それは動的ではありません – FancyFries
私はそれを得たと思います。パスの周りに一重引用符はありません。あなたのSETにそれらを含めると、それがそれを修正するかどうかを確認してください。 '...}、$ .glossary.title)'は '...} '、' $ .glossary.title ')' –