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

如何从Microsoft SQL Server的Hangfire.Job表Arguments列中提取纯外键值

提取Hangfire.Job表Arguments列中的纯外键

我明白你想从Hangfire的Job表Arguments列里提取那些作为外键的数字,之前用PARSENAME和REPLACE的思路确实不太适配这种JSON数组格式的内容,咱们换用SQL Server原生的JSON函数来处理会更准确可靠。

因为Arguments列存储的是标准的JSON数组,直接用SQL Server的JSON_VALUE函数就能精准提取数组的第一个元素(也就是你要的外键),具体SQL语句如下:

SELECT 
    TRY_CAST(JSON_VALUE(Arguments, '$[0]') AS INT) AS ForeignKeyId
FROM Hangfire.Job
-- 先过滤掉非合法JSON的行,避免报错
WHERE Arguments IS NOT NULL AND ISJSON(Arguments) = 1

语句说明:

  • ISJSON(Arguments) = 1:先筛选出存储了合法JSON内容的行,防止后续JSON函数执行报错
  • JSON_VALUE(Arguments, '$[0]'):直接定位到JSON数组的第一个元素(索引从0开始),提取出类似"20073"、"20075"这样的字符串
  • TRY_CAST(...) AS INT:把提取到的字符串转换为整数类型,TRY_CAST会在转换失败时返回NULL,比普通CAST更安全,避免因格式异常导致整个查询失败

这个方法依赖SQL Server 2016及以上版本(因为这些版本开始支持JSON函数),而Hangfire本身就是用JSON格式存储Arguments的,所以用原生JSON函数处理比字符串替换的方式更稳定,不容易出现边界情况的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 23:42:30