当我使用表输入并从步骤中插入数据来替换时?在 sql 中。
例如,
select * from a where b in (?)
.
从mysql日志,sql是select * from a where b in ('0,1,2,3')
没有'如何使它执行?
谢谢
我看到了三种可能的方法。我猜你最喜欢选项“C”。
A)如果您知道您的 IN 子句始终只有 4 个值,您可以通过将 4 个值存储在 Job 变量中并使用 Get Variables 步骤将它们读入单行,然后将该行流入数据库查找来做到这一点步骤,其 SQL 如下所示:
select * from a where b in (?, ?, ?, ?)
并替换单个传入行中的值。
B)如果您有可变数量的值,我会考虑将值列表规范化为行,也许使用“将字段拆分为行”步骤,使用“添加常量”将“找到”值添加到每一行,然后将它们流入流查找。然后在 Stream Lookup 之后,将所有“找到”值为空的行流到 Dummy 步骤。
C) 在 Job 中构建您的值列表并将其作为变量传递。在您的表输入步骤中,使用如下语句:
select * from a where b in (${varname})
并检查“替换变量脚本”。该变量将在执行之前扩展为 SQL。