2017-09-20 7 views
3

SQL Server 2016テーブルにいくつかのJSONオブジェクトを挿入したいとします。JSONオブジェクトをSQL Server 2016にnvarcharとして挿入する方法

次のように私のテーブルの構造は次のとおりです。

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を表に移入されています。 homeAddressofficeAddressの両方の値はNULLです。

クエリに問題がありますか? JSONオブジェクトをnvarcharとして挿入するにはどうすればよいですか?

+3

は同様officeAddress'は単なる文字列ではありません ''としてhomeAddress'両方のように思える - しかし、JSONオブジェクト自体を... –

+0

はいhomeAddressとofficeAddressは、両方のJSONオブジェクトです。私は文字列にオブジェクトを変換するチュートリアルを探していますが、まだ運がありません。 – KnightCavalry

答えて

1

私はSQL Serverの2016年JSONのものとの経験がないが、このチュートリアルを見て認めるよ:それはあなたのNVARCHAR(max)列の後AS JSONを追加することのように思える

https://docs.microsoft.com/en-us/sql/relational-databases/json/solve-common-issues-with-json-in-sql-server

は何が必要かもしれ。

INSERT INTO Employee 
    SELECT * 
    FROM OPENJSON(@json) 
    WITH (name nvarchar(50), 
      age int, 
      homeAddress nvarchar(max) AS JSON, 
      officeAddress nvarchar(max) AS JSON 
     ); 
+0

これは完璧です。ありがとうございました! – KnightCavalry

関連する問題