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

如何仅用SQL语法在MySQL中动态填充JSON路径

动态生成JSON路径的SELECT语句实现方案

单字段动态查询

如果仅需基于元数据表中指定Sequence的字段生成JSON路径,直接通过子查询拼接路径即可,可行的SQL语句如下:

SELECT 
  EmployeeName,
  JSON_VALUE(SpecialProperties, CONCAT('$.', (SELECT CustomFieldName FROM TempMetaData WHERE Sequence = 1))) AS DynamicField
FROM TempBusinessData;

这段代码通过子查询获取Sequence=1对应的字段名,再用CONCAT拼接成标准JSON路径$.字段名,传入JSON_VALUE就能提取对应属性值。

多字段动态转列(全量元数据字段)

如果需要一次性将元数据表中所有字段作为列查询,由于列数是动态的,需要用动态SQL实现:

DECLARE @sql NVARCHAR(MAX);

-- 拼接所有动态字段的JSON_VALUE语句
SELECT @sql = STRING_AGG(
  CONCAT('JSON_VALUE(SpecialProperties, ''$.', CustomFieldName, ''') AS ', QUOTENAME(CustomFieldName)),
  ', '
)
FROM TempMetaData
ORDER BY Sequence;

-- 组装完整SELECT语句
SET @sql = CONCAT('SELECT EmployeeName, ', @sql, ' FROM TempBusinessData;');

-- 执行动态SQL
EXEC sp_executesql @sql;

执行后会自动生成包含所有元数据字段的查询结果,比如返回EmployeeName、FavoriteFruit、FavoriteColor、FavoriteAnimal列。

补充:你提到的Stack Overflow帖子内容翻译

原帖标题《How to populate a json array object dynamically?》核心内容:
该帖围绕SQL中动态生成JSON数组/对象的需求展开,常见解决方案包括:

  • SQL Server 2017及以上版本使用STRING_AGG拼接JSON字符串,低版本可通过FOR XML PATH实现类似效果
  • 结合元数据表动态构建JSON路径或键值对,搭配JSON_QUERY、JSON_VALUE函数完成动态数据提取
  • 复杂场景下采用动态SQL生成完整的JSON构造语句,灵活适配元数据的变更

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:25:25