Informix SQL文本Blob通配符搜索

时间:2009-11-16 08:56:36

标签: sql blob informix

我正在寻找一种在文本(blob)列上使用通配符搜索的有效方法。
我已经看到它内部存储为字节... 数据量将受到限制,但不幸的是我的供应商决定使用这种愚蠢的数据类型。如果有一个简单的系统端函数来修改它,我还会考虑将所有内容都移到临时表中 - 不幸的是像rpad这样的东西不起作用...
通过使用选择部分中的列或通过Perl的DBI模块读取数据,我可以正确地看到文本值。

1 个答案:

答案 0 :(得分:4)

不幸的是,你被困住了 - 你可以在TEXT或BYTE blob上执行很少的操作。特别是,这些都不起作用:

+ create table t (t text in table);
+ select t from t where t[1,3] = "abc";
SQL -615: Blobs are not allowed in this expression.
+ select t from t where t like "%abc%";
SQL -219: Wildcard matching may not be used with non-character types.
+ select t from t where t matches "*abc*";
SQL -219: Wildcard matching may not be used with non-character types.

根据IDS的版本,您可以选择BTS - 基本文本搜索(需要IDS v11)或其他文本搜索数据刀片。另一方面,如果数据已经在数据库中并且无法进行类型转换,那么您可能会被迫提取blob并在客户端搜索它们,这效率较低。如果必须这样做,请确保过滤尽可能多的其他条件,以最大限度地减少所需的流量。

您可能还会注意到DBD :: Informix必须经历一些阴谋才能使blob看起来有效 - 坦白说,它不应该经历过这种阴谋。到目前为止,在十年的尝试中,我并没有说服人们这些事情需要修复。