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

SQL使用OpenJSON查询时如何获取JSON顶层键名作为用户名列

你观察到的结论是正确的,当前JSON结构中顶级键(key)就是你要的用户名,由于key是SQL Server的保留关键字,使用时需要加方括号包裹。你需要结合两层OPENJSON调用实现需求,第一层获取用户名,第二层解析对应用户的属性字段,完整查询语句如下:

SELECT 
    [key] AS username,
    user_type,
    user_enabled,
    last_login
FROM OPENJSON(@json)
CROSS APPLY OPENJSON([value])
WITH (
    user_type NVARCHAR(100) '$.user_type',
    user_enabled NVARCHAR(100) '$.user_enabled',
    last_login NVARCHAR(100) '$.last_login'
)

原理解释

  • 第一层OPENJSON(@json)返回的结果中,[key]列存储顶级键(即bob、claire这类用户名),[value]列存储对应用户的嵌套JSON对象
  • CROSS APPLY会为每一行的[value]内容再次调用OPENJSON,通过WITH子句解析出用户的三个属性字段
  • 如果你不想用CROSS APPLY,也可以直接在字段中用JSON_VALUE取值,写法如下:
SELECT 
    [key] AS username,
    JSON_VALUE([value], '$.user_type') AS user_type,
    JSON_VALUE([value], '$.user_enabled') AS user_enabled,
    JSON_VALUE([value], '$.last_login') AS last_login
FROM OPENJSON(@json)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:15:03