sql-server - 性能 SQL - JSON 提取
问题描述
我需要从一些字符串字段(JSON 代码)中提取一个 ID。从性能角度来看,获取此 ID 的最佳方式是什么?在哪里?
评论:
- 有不同类型的消息
- 有效负载:JSON 字段
- 消息类型 1 示例:{"RequestId":"4B5E95D49D3E46548904083D0CD17521"}
- 消息类型 2 示例:{"createdById":"XXXXXXXXX","requestId":"15F79EC78E5243A487337C0FE61A9E00","sessionId":null}
- SQL 为了提取 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 2016+,请使用以下查询:
select JSON_VALUE(t.payload, '$.requestId') from table t
推荐阅读
- python - 运行 RegEx 代码块时,Spyder 控制台不断重启
- mysql - MySQL 8 中查询中 sum() 的数量限制?
- spring - Webflux 控制器'返回对象而不是 Mono'
- tensorflow - 无法安装 tensorflow/tfjs
- c# - C# WebClient 无法从链接下载 csv 文件
- python - 有没有办法使用turtle模块一次获得多个输入
- windows - 如何在 Windows 10 上远程启动服务
- css - TailwindCSS、Webpack 和 Sass:在 CSS 文件中使用时找不到类,但在内联 HTML 时工作正常
- primefaces - 如何禁用 p:overlayPanel 的定位?
- c++ - 如何在 N-Api Addon C 中解决 Node.js Promise