我有一个参数化的 SQL 查询,我想从 Exasol 数据库上的(本地)R 执行,如下所述: https ://db.rstudio.com/best-practices/run-queries-safely/#parameterized-queries 。
with tab as
(select
t.*,
position(value in ?) as pos
from MY_TABLE t
)
select * from tab where pos > 0;
传递给的值?
是一个(长)字符串。当这个字符串不超过 2000 个字符时,一切正常。当我将其增加到 2001 个字符时,出现错误:
Error in result_bind(res@ptr, as.list(params)) :
nanodbc/nanodbc.cpp:1587: 40001: [EXASOL][EXASolution driver]GlobalTransactionRollback
msg: data exception - string data, right truncation. (Session: 1640027176042911503)
我猜问题的根源是我的参数被识别为CHAR
而不是VARCHAR
。Exasol 用户手册指出:“两种类型的长度分别限制为 2,000 个字符 (CHAR) 和 2,000,000 个字符 (VARCHAR)”。
有什么办法可以投到?
吗VARCHAR
?