Informix SQL текстовый поиск по шаблону Blob - PullRequest
1 голос
/ 16 ноября 2009

Я ищу эффективный способ использования поиска по шаблону в столбце text (blob).
Я видел, что это внутренне хранится как байты ... Объем данных будет ограничен, но, к сожалению, мой поставщик решил использовать этот глупый тип данных. Я бы также посоветовал переместить все во временную таблицу, если есть легкая системная функция для ее изменения - к сожалению, что-то вроде rpad не работает ...
Я правильно вижу текстовое значение, используя столбец в выделенной части или читая данные через модуль Perl DBI.

1 Ответ

4 голосов
/ 16 ноября 2009

К сожалению, вы застряли - очень мало операций, которые вы можете выполнить с BLOB-объектами TEXT или BYTE. В частности, ни одна из этих работ:

+ 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) или с другими блейдами данных текстового поиска. С другой стороны, если данные уже находятся в БД и не могут быть преобразованы по типу, вы можете быть вынуждены извлечь большие двоичные объекты и выполнить их поиск на стороне клиента, что менее эффективно. Если вы должны это сделать, убедитесь, что вы отфильтровываете как можно больше других условий, чтобы минимизировать необходимый трафик.

Вы также можете заметить, что DBD :: Informix должен пройти через некоторые махинации, чтобы сгустки выглядели работающими - махинации, которые он, честно говоря, не должен проходить. До сих пор за десятилетие попыток я не убедил людей в том, что эти вещи нужно исправить.

...