绑定参数不适用于Firebird 2.0。有解决方法吗?

时间:2015-02-22 08:19:32

标签: firebird

如果我将绑定参数与like一起使用,则会限制参数的长度。

例如:

select * from rdb$database where :x like '%N';

如果x参数长于2,我会收到字符串截断异常。我正在使用Firebird 2.0。有没有解决方法或绑定参数不适用于like

1 个答案:

答案 0 :(得分:0)

在Firebird中,绑定参数的大小与它们所比较的字段,列或值的类型和长度相同。在这种情况下,您要与两个字符的文字进行比较,它被Firebird视为CHAR(2),因此绑定参数也是CHAR(2)。这不仅适用于like,而且适用于所有比较操作。

这意味着您不能为参数使用长度超过两个字符的值。我知道有两种解决方法:

  • 投射价值,例如:WHERE ? LIKE CAST('%N' AS VARCHAR(256))
  • 投射参数,例如:WHERE CAST(? AS VARCHAR(256)) LIKE '%N'