上下文:我有一个带有以下表单的 JSON 文档保存到 SQL Server 临时表中的列中
[{"File": {"File_Name": "SCAN_6X_AHMC_AAPC_837I_11182019_11242019.txt", "Last_Modified": "Lastmodified:20191125.121049", "File_Size": "Filesize:7196"}}, {"File": {"File_Name": "SCAN_6X_AHMC_AAPC_837P_11182019_11242019.txt", "Last_Modified": "Lastmodified:20191125.121017", "File_Size": "Filesize:3949"}}]
问:我正在尝试使用 T-SQL 的 OPENJSON 函数从 JSON 中提取文件名、修改日期和文件大小。使用下面的代码块,我正在尝试获取的字段中提取 NULL 值。为什么?我该如何解决这个问题?
SELECT ##jsondump.my_json, jsn.[file_name], jsn.last_modified, jsn.file_size
FROM ##jsondump
OUTER APPLY (
SELECT * FROM OPENJSON(##jsondump.my_json, '$.File')
WITH (
[file_name] NVARCHAR(50) '$.File_Name',
last_modified NVARCHAR(50) '$.Last_Modified',
file_size NVARCHAR(50) '$.File_Size'
)
) AS jsn
DECLARE @json NVARCHAR(MAX)
SET @json = (SELECT my_json FROM ##jsondump)
SELECT json_column.*,
JSON_VALUE([value], '$.File_Name') As [File_Name],
JSON_VALUE([value], '$.Last_Modified') As Last_Modified,
JSON_VALUE([value], '$.File_Size') As File_Size
FROM OPENJSON(@json) as json_column