如果我将绑定参数与like
一起使用,则会限制参数的长度。
例如:
select * from rdb$database where :x like '%N';
如果x
参数长于2,我会收到字符串截断异常。我正在使用Firebird 2.0。有没有解决方法或绑定参数不适用于like
?
答案 0 :(得分:0)
在Firebird中,绑定参数的大小与它们所比较的字段,列或值的类型和长度相同。在这种情况下,您要与两个字符的文字进行比较,它被Firebird视为CHAR(2)
,因此绑定参数也是CHAR(2)
。这不仅适用于like
,而且适用于所有比较操作。
这意味着您不能为参数使用长度超过两个字符的值。我知道有两种解决方法:
WHERE ? LIKE CAST('%N' AS VARCHAR(256))
WHERE CAST(? AS VARCHAR(256)) LIKE '%N'