【发布时间】:2011-08-08 01:12:58
【问题描述】:
我正在使用 Derby 数据库。我写了这个查询:
InputStream is = new java.io.ByteArrayInputStream(BYTES);
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob =?)");
st11.setBlob(1,is,BYTES.length);
dBlob 是一种 BLOB 数据类型。 BYTES 也是一种 BLOB 数据类型。
但是当我执行这个查询时出现以下异常:
原因:错误 42818:不支持“BLOB”和“BLOB”之间的比较。 类型必须具有可比性。字符串类型也必须有匹配的排序规则。如果合作 llation 不匹配,一个可能的解决方案是强制转换操作数 默认排序规则(例如 SELECT tablename FROM sys.systables WHERE CAST(tabl ename AS VARCHAR(128)) = 'T1')
如何编写查询来规避这个问题?
我也尝试过使用 Convert,但它也无法使用:
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob
=CONVERT(?,BINARY)");
st11.setBlob(1,is,BYTES.length);
此外,是否可以获取传入参数的数据类型?通过反思或其他方式。
【问题讨论】:
标签: blob prepared-statement derby