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

Azure Data Factory表达式中保留方括号的正确方法

解决ADF Lookup活动中SQL保留关键字方括号被移除的问题

问题原因

你遇到的方括号被ADF移除的问题,是因为动态字符串拼接时的表达式解析歧义,加上原表达式存在多余的右括号,导致ADF误处理了方括号部分。而使用[[Key]]会让SQL Server收到无效语法,因此报错。

正确解决方案

方案1:修正Replace表达式写法

确保字符串转义正确且无多余符号,方括号会被完整保留:

@replace('SELECT * FROM dbo.MyTable WHERE dbo.[Key] = ''{value}''', '{value}', 'someValue')

注意:单引号在ADF表达式中需要用两个单引号转义,原字符串不要添加多余括号。

方案2:使用Concat函数拼接查询(更直观)

直接拼接字符串各部分,避免Replace的解析歧义:

@concat('SELECT * FROM dbo.MyTable WHERE dbo.[Key] = ''', 'someValue', '''')

这种方式下,方括号作为普通字符串被直接传入SQL Server,不会被ADF修改。

方案3:参数化查询(推荐,安全防注入)

使用ADF的参数化查询功能,彻底避免字符串转义问题:

  1. 在Lookup活动所在的管道中定义参数(例如p_keyValue),设置值为someValue
  2. 编写SQL查询语句:
SELECT * FROM dbo.MyTable WHERE dbo.[Key] = ?
  1. 在Lookup活动的「参数」配置中,将查询中的?映射到定义的参数@pipeline().parameters.p_keyValue

这种方法不仅解决了方括号的问题,还能防止SQL注入风险,是更规范的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:15:08