Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server OPENJSON选择子对象_Sql_Json_Sql Server - Fatal编程技术网

SQL Server OPENJSON选择子对象

SQL Server OPENJSON选择子对象,sql,json,sql-server,Sql,Json,Sql Server,这是我的密码: DECLARE @Orders VARCHAR(MAX) select @Orders = BulkColumn FROM OPENROWSET(BULK'C:\temp\amazonjson.json.txt', SINGLE_BLOB) JSON; SELECT * FROM OPENJSON(@Orders,'$.orders') WITH( orderId bigint '$.orderId', orderNumber nvarchar(50) '$.orderNum

这是我的密码:

DECLARE @Orders VARCHAR(MAX)

select @Orders = BulkColumn FROM OPENROWSET(BULK'C:\temp\amazonjson.json.txt', SINGLE_BLOB) JSON;

SELECT *
FROM OPENJSON(@Orders,'$.orders')
WITH(
orderId bigint '$.orderId',
orderNumber nvarchar(50) '$.orderNumber',
orderKey nvarchar(50) '$.orderKey',
orderDate nvarchar(50) '$.orderDate',
paymentDate nvarchar(50) '$.paymentDate',
shipByDate nvarchar(50) '$.shipByDate',
orderStatus nvarchar(50),
customerId nvarchar(50),
customerUsername nvarchar(50),
customerEmail nvarchar(50),
orderTotal nvarchar(50),
amountPaid nvarchar(50),
taxAmount nvarchar(50),
shippingAmount nvarchar(50),
customerNotes nvarchar(50),
internalNotes nvarchar(50),
gift nvarchar(50),
giftMessage nvarchar(50),
paymentMethod nvarchar(50),
requestedShippingService nvarchar(50),
carrierCode nvarchar(50),
serviceCode nvarchar(50),
packageCode nvarchar(50),
confirmation nvarchar(50),
shipDate nvarchar(50),
holdUntilDate nvarchar(50),
billTo nvarchar(max) '$.billTo',
items nvarchar(max)
)

问题是最后两列--billTo是一个对象--{“name”:“bob smith”,“address”:“1234 main”}--
而items是一个数组。我试图简单地将列显示为json字符串,以便稍后对其进行分析。

为了维护json字符串,请使用
作为json
而不是json路径:

DECLARE @Orders VARCHAR(MAX)

select @Orders = BulkColumn FROM OPENROWSET(BULK'C:\temp\amazonjson.json.txt', SINGLE_BLOB) JSON;

SELECT *
FROM OPENJSON(@Orders,'$.orders')
WITH(
orderId bigint '$.orderId',
orderNumber nvarchar(50) '$.orderNumber',
orderKey nvarchar(50) '$.orderKey',
orderDate nvarchar(50) '$.orderDate',
paymentDate nvarchar(50) '$.paymentDate',
shipByDate nvarchar(50) '$.shipByDate',
...
billTo nvarchar(max) AS JSON,
items nvarchar(max) AS JSON

就这样。非常感谢。