繁体   English   中英

Informix SQL文本Blob通配符搜索

[英]Informix SQL text Blob wildcard search

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

不幸的是,你被困住了 - 你可以在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看起来有效 - 很明显,它不应该通过这种阴谋。 到目前为止,经过十年的尝试,我并没有说服人们这些东西需要修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM