Kettle 如何在查询中转义PDI Pentaho中的问号(?)字符

Kettle 如何在查询中转义PDI Pentaho中的问号(?)字符,kettle,pdi,Kettle,Pdi,我试图在PDI7.1中的执行SQL语句步骤中执行以下查询 update table_x set text = '? rows where update using https://example.net?param=1' where 1=1 问题是,第一个问号对应于我从上一步获得的参数,但第二个问号对应于URL,因此需要按原样保存。这会导致作业失败,并出现IndexOutOfBounds异常,因为kettle将url问号当作参数使用 我曾尝试如下方式逃跑,但没有结果: \? ? (?) 但

我试图在PDI7.1中的执行SQL语句步骤中执行以下查询

update table_x set text = '? rows where update using https://example.net?param=1' where 1=1
问题是,第一个问号对应于我从上一步获得的参数,但第二个问号对应于URL,因此需要按原样保存。这会导致作业失败,并出现IndexOutOfBounds异常,因为kettle将url问号当作参数使用

我曾尝试如下方式逃跑,但没有结果:

  • \?
  • ?
  • (?)
但是没有人工作

最后,我决定在上一步中创建一个url参数,然后按如下方式使用它:

update table_x set text = '? rows where update using ?' where 1=1

这是可行的,但我仍然想知道是否有办法摆脱这个角色。

这个长期存在的问题来自于在JDBC中使用preparedStement,Sun和Oracle都没有解决这个问题。根据需要,您的解决方案是最好的。

尝试使用反斜杠<代码>更新表格\u x集合文本='\?使用https://example.net?param=1'其中1=1。反斜杠常用于多种语言中的转义序列。@Martin我在问题中指出了反斜杠。