2017-01-17 1 views
0

簡単な例として、私はorderIDをjsonデータの各行のレコードに追加しようとしています。標準値とjsonデータを組み合わせたSQL Server 2016の挿入を処理する例

declare @orderid as int = 22 

declare @jdata as nvarchar(max) = '[{"qty":"5","description":"purple zebras ","clientid":null,"projectid":null,"cost":"179.15"}]' 

insert into MB_OrderItems (OrderID) 
select @OrderID as OrderID 
cross apply 
openjson(@jdata) 
with (
    qty int, 
    description varchar(100), 
    clientID int, 
    projectid int, 
    cost decimal(18,2) 
    ) as ordersarray 

答えて

0

この方法は、その後、新しいフィールドとしてご注文IDを追加し、テーブルにそれをフォーマットし、あなたのJSON文字列を受け取り、JSON文字列に戻ってそれを置きます。あなたのJSON文字列に返されたヌルを取得するには、SQL ServerにNULLを返すように明示的に指示する必要があります。

declare @orderid as int = 22 
declare @jdata as nvarchar(max) = '[{"qty":"5","description":"purple zebras ","clientid":null,"projectid":null,"cost":"179.15"}]' 


;with CTE AS (
select * 
FROM OPENJSON(@JDATA) 
WITH (qty int '$.qty', 
description varchar(100) '$.description', 
clientid INT '$.clientid', 
projectID INT '$.projectid', 
cost money '$.cost', 
orderID INT) 
) 


SELECT 
qty, 
description, 
clientid, 
projectid, 
cost, 
@orderid AS Orderid 
FROM cte 
FOR JSON AUTO, INCLUDE_NULL_VALUES 
関連する問題