Azure Logic Apps中如何将SQL查询JSON结果转为数组用于条件逻辑?
在Azure Logic Apps中实现ID归属判断的两种方案
方案一:直接修改SQL查询返回纯ID数组
(适用场景:有权限调整SQL查询,这是最简便的处理方式)
- 修改SQL查询,用
STRING_AGG函数将所有ID拼接为JSON数组格式(以SQL Server为例):SELECT CONCAT('[', STRING_AGG(ISNULL(ID, ''), ','), ']') AS IDArray FROM YourTargetTable -- 这里添加你的过滤条件 - 在Logic Apps中对SQL返回结果使用
Parse JSON工具,将IDArray字段解析为数值数组 - 直接在条件判断中使用
contains函数:contains(body('Parse_JSON')?['IDArray'], triggerBody()?['YourTargetID'])
方案二:在Logic Apps中通过表达式转换数组
(适用场景:无法修改SQL查询,需处理现有带结构的JSON结果)
- 先用
Parse JSON工具处理SQL返回的原始JSON结构 - 在条件判断中使用
select函数提取所有ID值,同时兼容结果中的空键情况:contains( select( body('Parse_JSON')?['ResultSets']?['Table1'], if(contains(item(), 'ID'), item()?['ID'], item()?['']) ), triggerBody()?['YourTargetID'] ) - 说明:
select函数遍历Table1中的每个对象,判断是否存在ID键——存在则取ID值,否则取空键对应的数值,最终生成纯数值数组,再用contains判断目标ID是否在数组内
补充提示
你的SQL返回结果中出现空键({"":88}),大概率是因为查询时某条记录的列别名为空。建议检查SQL语句,确保所有ID列统一使用ID作为别名,这样表达式可简化为:
contains(select(body('Parse_JSON')?['ResultSets']?['Table1'], item()?['ID']), triggerBody()?['YourTargetID'])
内容的提问来源于stack exchange,提问作者chuckb35
相关产品推荐
相关产品推荐

