SQL Serverテーブルを25列作成しました。私の列の1つは実際にJSONテキストで、nvarchar(max)として格納されています。SQL Server JSON_VALUE構文
このJSON列を照会して、さまざまな属性を解析する必要があります。 JSON_VALUEを私の列に適用しようとしましたが、何か間違っています。クエリは実行されますが、すべての値に対してNULLが返されます。
[ { "lineName":"GHjr", "pipeDiameter":"12", "pipeLength":"52000", "pressure":"15", "volume":"107" }, { "lineName":"Ks3R", "pipeDiameter":"9", "pipeLength":"40000", "pressure":"15", "volume":"80" } ]
私が使用しているSQLは次のとおりです:しかし、私の2 "解析された" 列はすべてNULLを返している
select
DOC_ID, LINE_SPECS,
JSON_VALUE(LINE_SPECS, '$.lineName') as line_name,
JSON_VALUE(LINE_SPECS, '$.pipe_Diameter') as diameter
from dbo.MY_TEST_DOCS
where ISJSON(LINE_SPECS) > 0
and len(LINE_SPECS) > 3
JSON自体は次のようになります。この列から5つの属性を解析するにはどうすればよいですか?
何らかのエラーが出てくるかどうかを確認するために、 'strict'モードで' JSON_VALUE'を置きます。デフォルトのモードは 'lax'で、エラーを生成しません。単に' NULL'を返します。 https://docs.microsoft.com/en-us/sql/relational-databases/json/json-path-expressions-sql-serverまた、 '$ .pipe_Diameter'は' $ .pipeDiameter'だと思います –
角括弧を削除し、JSONの大文字と小文字を区別する名前に一致するように選択すると、値が返されます – dfundako
実際には角括弧は配列の場合は大丈夫かもしれません。 –