You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS SQL Server大JSON字符串转XML后如何使用JSON功能处理?

解决SQL Server中大JSON字符串的JSON函数处理问题

首先明确:你转XML只是为了查看完整内容,但处理JSON必须用原NVARCHAR(MAX)类型的字段,SQL Server的JSON函数(JSON_VALUE、OPENJSON等)只识别字符串格式的JSON,不需要经过XML转换。

直接使用原字段调用JSON函数

假设你的日志表名为EventLogs,存储JSON的字段为EventData(NVARCHAR(MAX)类型),直接对该字段使用JSON函数即可:

示例1:用OPENJSON解析JSON数组

如果存储的是JSON数组,用OPENJSON配合CROSS APPLY可以把数组拆成行:

SELECT 
    parsed.EventID,
    parsed.EventName,
    parsed.EventTime
FROM EventLogs el
CROSS APPLY OPENJSON(el.EventData)
WITH (
    EventID INT '$.id',
    EventName NVARCHAR(200) '$.event_name',
    EventTime DATETIME2 '$.occur_time'
) parsed;

示例2:用JSON_VALUE提取单个值

如果只需要提取数组中某个位置的特定值:

SELECT 
    JSON_VALUE(el.EventData, '$[0].event_name') AS FirstEventName,
    JSON_VALUE(el.EventData, '$.common_info.source') AS SourceSystem
FROM EventLogs el;

关于直接SELECT显示不全的问题

你提到部分字符串过大无法直接SELECT查看,这是SSMS的显示限制,不是数据本身的问题:

  • 打开SSMS的「工具」→「选项」→「查询结果」→「SQL Server」→「结果到网格」,把「最大字符数」调整为更大的值(比如65535或直接选「最大值」),就能完整显示NVARCHAR(MAX)的内容
  • 或者切换到「结果到文本」模式,调整「每行最大字符数」即可,不需要转XML

不要用XML转回来处理

如果把XML再转回字符串,会带上<![CDATA[...]]>标签,反而破坏JSON结构,导致JSON函数报错,完全没必要这么做。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:42:49