SQL Server2016テーブルにいくつかのJSONオブジェクトを挿入したいと思います。
私のテーブル構造は次のとおりです。
field type nullable default
name | nvarchar(max) | true | Null
age | nvarchar(max) | true | Null
homeAddress | nvarchar(max) | true | Null
officeAddress | nvarchar(max) | true | Null
次のクエリを使用してデータを挿入しています。
DECLARE @json NVARCHAR(MAX) = N'{"name":"John Smith","age":32,"homeAddress":{"addr1":"123rd West Street, Willow Apt","addr2":"#55 Suite","zipCode":12345,"city":"Austin","state":"TX"},"officeAddress":{"addr1":"23rd West Street","addr2":"","zipCode":12345,"city":"Austin","state":"TX"}}';
INSERT INTO Employee
SELECT *
FROM OPENJSON(@json)
WITH (name nvarchar(50),
age int,
homeAddress nvarchar(max),
officeAddress nvarchar(max)
);
ただし、name
とage
の値のみがテーブルに入力されます。 homeAddress
とofficeAddress
の両方の値がNULLです。
私のクエリの何が問題になっていますか? JSONオブジェクトをnvarcharとして挿入するにはどうすればよいですか?
SQL Server 2016でJSONを使用した経験がないことは認めますが、このチュートリアルを見てください。
NVARCHAR(max)
列の後にAS JSON
を追加することが必要なようです。
INSERT INTO Employee
SELECT *
FROM OPENJSON(@json)
WITH (name nvarchar(50),
age int,
homeAddress nvarchar(max) AS JSON,
officeAddress nvarchar(max) AS JSON
);