引き続き2016のjson機能(1)についてお話しします
9621 ワード
まずデータをテストして、データは使用する前に、
細かいことは気にしないでね~
次に、このテーブルで生成されたjsonを使用してテストを行います.最も簡単な例です.
最も簡単にJsonを結果セットに解析する形式であり,ノードが存在しない場合は付与値は空である.
実はopenxmlの使い方と似ています
そして用法2は,jsonフォーマットの中のフォーマットを解析することができ,openjsonの後ろにキーワードwithが付いていない場合,json自体の構造を解析すると考えられる.例えば(テキストにフォーマットするのはこの文の下でちょっとおかしいので、結果セットで貼って、ちょっと散らかって、みんなで我慢します)
前の2つはよく理解して、3番目の位置、type.タイプはopenjsonの解析ではこうです
0 null
1 string
2 int
3 bool
4 array
5 object
ID、Math、Chineseはすべて整形で、名前は文字列で、それからもう一つの例に来ます
ここでは9.9のようなタイプでもopenjsonを使うと整形していると思われるので、タイプを解析しても正確なデータ型をもたらすとはあまり信じないでください.jsonに複数の行オブジェクトが含まれている場合、openjson withのフォーマットで解析できると聞かれるかもしれませんが、どうやって認定しますか?例えば
Openjsonを用いて直接解析すると,4つの列がすべてObjectタイプであることが明らかになったが,それだけである.
一般的には、この部分を使っていますよね~ん~今回はここまでにして、次の文章を書きます
細かいことは気にしないでね~
create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int)
insert into t1 values (' ',90,80),(' ',75,90),(' ',68,100),(' ',90,null);
次に、このテーブルで生成されたjsonを使用してテストを行います.最も簡単な例です.
declare @v nvarchar(600) = N'[{"ID":1,"name":" ","Chinese":90,"Math":80},{"ID":2,"name":" ","Chinese":75,"Math":90},{"ID":3,"name":" ","Chinese":68,"Math":100},{"ID":4,"name":" ","Chinese":100}]'
select * from openjson(@v)
with (
ID int '$.ID',
name nvarchar(50) '$.name',
Math int '$.Math',
Chinese int '$.Chinese'
)
------------------------
ID name Math Chinese
----------- -------------------------------------------------- ----------- -----------
1 80 90
2 90 75
3 100 68
4 NULL 100
最も簡単にJsonを結果セットに解析する形式であり,ノードが存在しない場合は付与値は空である.
実はopenxmlの使い方と似ています
そして用法2は,jsonフォーマットの中のフォーマットを解析することができ,openjsonの後ろにキーワードwithが付いていない場合,json自体の構造を解析すると考えられる.例えば(テキストにフォーマットするのはこの文の下でちょっとおかしいので、結果セットで貼って、ちょっと散らかって、みんなで我慢します)
declare @v nvarchar(600) = N'{"ID":1,"name":" ","Chinese":90,"Math":80}'
select * from openjson(@v)
key value type
ID 1 2
name 1
Chinese 90 2
Math 80 2
前の2つはよく理解して、3番目の位置、type.タイプはopenjsonの解析ではこうです
0 null
1 string
2 int
3 bool
4 array
5 object
ID、Math、Chineseはすべて整形で、名前は文字列で、それからもう一つの例に来ます
declare @v nvarchar(600) = N'{"ID":true,"name":null,"Chinese":9.9,"Math":"hello","arr":[1,2,3,4],"obj":{"name":"test"}}'
select * from openjson(@v)
key value type
ID true 3
name NULL 0
Chinese 9.9 2
Math hello 1
arr [1,2,3,4] 4
obj {"name":"test"} 5
ここでは9.9のようなタイプでもopenjsonを使うと整形していると思われるので、タイプを解析しても正確なデータ型をもたらすとはあまり信じないでください.jsonに複数の行オブジェクトが含まれている場合、openjson withのフォーマットで解析できると聞かれるかもしれませんが、どうやって認定しますか?例えば
declare @v nvarchar(600) = N'[{"ID":1,"name":" ","Chinese":90,"Math":80},{"ID":2,"name":" ","Chinese":75,"Math":90},{"ID":3,"name":" ","Chinese":68,"Math":100},{"ID":4,"name":" ","Chinese":100}]'
Openjsonを用いて直接解析すると,4つの列がすべてObjectタイプであることが明らかになったが,それだけである.
一般的には、この部分を使っていますよね~ん~今回はここまでにして、次の文章を書きます