首页 > 解决方案 > 性能 SQL - JSON 提取

问题描述

我需要从一些字符串字段(JSON 代码)中提取一个 ID。从性能角度来看,获取此 ID 的最佳方式是什么?在哪里?

评论:

select  
    (Case 
        when eventType = 'Type1' then substring (payload, CHARINDEX('{',payload)+ LEN('{"RequestId":"'),   CHARINDEX ('"}', payload) -( CHARINDEX('{',payload)+ LEN('{"RequestId":"'))) 
        when eventType = ' Type2' then substring (payload, CHARINDEX('"requestId":"',payload)+ LEN('"requestId":"'),   CHARINDEX ('","sessionId"', payload) -(  CHARINDEX('"requestId":"',payload)+ LEN('"requestId":"'))) 
        else 'none' END) as RequestID 
  from table

标签: sql-server

解决方案


如果您运行的是 SQL Server 2016+,请使用以下查询:

select JSON_VALUE(t.payload, '$.requestId') from table t

推荐阅读