ADF管道动态SQL查询中如何移除引号转义斜杠?
解决Azure Data Factory动态SQL中的转义斜杠问题
问题原因
你遇到的转义斜杠(\)是因为在动态SQL中错误地用双引号包裹了ADF变量拼接的表达式,导致ADF将整个拼接内容识别为字符串常量,自动添加转义符处理双引号。另外第二种写法直接在SQL中引用ADF变量(未用@{...}包裹),本身属于语法错误。
正确写法
直接将变量拼接的表达式通过@{...}嵌入SQL的函数参数中,不要额外添加双引号,示例如下:
select * from c where timestampToDateTime(@{concat(variables('lastUpdatedColumn'),'*1000')}) < "@{formatDateTime(utcnow(),'yyyy-MM-ddTHH:mm:ss.fffffffZ')}"
效果说明
这样生成的SQL会直接将变量值(比如c._ts)与*1000拼接为c._ts*1000,作为timestampToDateTime的计算参数,最终生成的SQL无转义斜杠:
select * from c where TimestampToDateTime(c._ts*1000) < "2024-07-24T13:03:24.6140044Z"
关键注意点
- 若要将ADF变量/表达式作为SQL的计算逻辑(而非字符串常量),不要用双引号包裹
@{...}部分。 - 所有ADF变量、函数都必须通过
@{}语法嵌入SQL,不能直接在SQL中写variables('xxx')这类ADF表达式。
内容的提问来源于stack exchange,提问作者ramesh reddy
相关产品推荐
相关产品推荐

