0

如果这样做,我会尝试从 JSON([查询])中提取嵌套的 JSON,-使用 nvarchar(4000),它正在工作(不幸的是,有些数据更大)-使用 nvarchar(max) 作为 json,该字段保持为空... 为什么 ??

--query=null :

SELECT 
visualContainers
     ,json1.[query]                                                

FROM [ReportServer_PBI].[Sections_RowSource] [sections]  
CROSS APPLY  OPENJSON(visualContainers)
WITH (
     [query]                                                     NVARCHAR(max)   '$.query'  as json
    ,[visualContainers.displayName]                              NVARCHAR(100)   '$.displayName' 
    ) as json1

--query 包含数据:

    SELECT 
visualContainers
     ,json1.[query]                                                

FROM [ReportServer_PBI].[Sections_RowSource] [sections]  
CROSS APPLY  OPENJSON(visualContainers)
WITH (
     [query]                                                     NVARCHAR(4000)   '$.query' 
    ,[visualContainers.displayName]                              NVARCHAR(100)   '$.displayName' 
    ) as json1
4

1 回答 1

0

包含的 JSON 可能不正确。JSON 在技术上需要 UTF8 编码,因此您可以验证这一点。您还应该验证包含的 JSON 是否有效并且没有碎片(包含多个 JSON 元素)。

我一直使用 nvarchar(max) ... as json 并且没有任何问题,所以我怀疑它与长度有关,而是 SQL Server 在使用“as”时可能以不同方式验证和/或解析文本的事实json"

于 2019-11-14T22:37:00.400 回答