Azure 数据工厂:将 where 子句作为字符串传递给带引号的动态查询
Azure data factory: pass where clause as a string to dynamic query with quotes
我有一个 Lookup,它从 MS SQL table 中检索一些记录,其中包含架构、table 名称和整个 where 子句。这些值被传递给副本数据(在 ForEach 中)在副本数据中,我使用动态查询语句,如:
@concat('select a.*, current_date as crt_tms from ',item().shm_nam,'.',item().tab_nam,
item().where_clause )
此构造在没有 where_clause 或带有整数的 where 子句的情况下工作正常。但是这样的字符串会出错:
'a 其中 a.CODSYSBRN ='XXX' ;'
关于引号 (')
我怎样才能通过它?
我知道当我使用双引号(以转义单引号)时,动态查询中作为固定字符串的 where 子句有效:
'a where a.CODSYSBRN =''XXX'';'
重点是我需要 where 子句是完全动态的,因为它因 table
而异
无论我尝试什么,我都会遇到这种错误:
语法错误或访问冲突;257 sql 语法错误:“where a”附近的语法不正确
ps 我也测试了这个,但结果相同:
select a.*, current_date as crt_tms from @{item().shm_nam}.@{item().tab_nam} @{item ().where_clause}
正如您所提到的,您正在从查找中获取整个 where 子句 table,查询必须分别在字符串和整数类型的 where 子句中包含列值。
示例查找 table:
在您的副本 activity 中,您可以像之前那样使用 Concat() 函数来组合静态值和参数。
@concat('select * from ',item().schma_name,'.',item().table_name,' ',item().where_clause)
出于调试目的,我在设置变量 activity 中添加了表达式,以查看表达式的值。
迭代 1:
迭代 2:
我有一个 Lookup,它从 MS SQL table 中检索一些记录,其中包含架构、table 名称和整个 where 子句。这些值被传递给副本数据(在 ForEach 中)在副本数据中,我使用动态查询语句,如: @concat('select a.*, current_date as crt_tms from ',item().shm_nam,'.',item().tab_nam, item().where_clause )
此构造在没有 where_clause 或带有整数的 where 子句的情况下工作正常。但是这样的字符串会出错: 'a 其中 a.CODSYSBRN ='XXX' ;'
关于引号 (') 我怎样才能通过它?
我知道当我使用双引号(以转义单引号)时,动态查询中作为固定字符串的 where 子句有效: 'a where a.CODSYSBRN =''XXX'';'
重点是我需要 where 子句是完全动态的,因为它因 table
而异无论我尝试什么,我都会遇到这种错误: 语法错误或访问冲突;257 sql 语法错误:“where a”附近的语法不正确
ps 我也测试了这个,但结果相同: select a.*, current_date as crt_tms from @{item().shm_nam}.@{item().tab_nam} @{item ().where_clause}
正如您所提到的,您正在从查找中获取整个 where 子句 table,查询必须分别在字符串和整数类型的 where 子句中包含列值。
示例查找 table:
在您的副本 activity 中,您可以像之前那样使用 Concat() 函数来组合静态值和参数。
@concat('select * from ',item().schma_name,'.',item().table_name,' ',item().where_clause)
出于调试目的,我在设置变量 activity 中添加了表达式,以查看表达式的值。
迭代 1:
迭代 2: