Если вы сохраняете текст в BLOB-объекте, вы должны сделать его blob sub_type text
(он же blob sub_type 1
) вместо blob
(он же blob sub_type binary
он же blob sub_type 0
). Хотя это не гарантия (некоторые драйверы Firebird не различают подтипы BLOB-объектов).
Чтобы преобразовать двоичный BLOB-объект в текстовый BLOB-объект, используйте
select cast(binblob as blob sub_type text character set utf8) from blobtbl
или без предложения набора символов:
select cast(binblob as blob sub_type text) from blobtbl
Кроме того, вы можете привести к VARCHAR
, но убедитесь, что вы указали достаточно длинный varchar для хранения всего значения, в противном случае вы получите ошибку усечения. Например:
select cast(binblob as varchar(1000) character set utf8) from blobtbl
В обоих случаях предложение набора символов является необязательным; он будет использовать набор символов соединения, если он выключен. Помните, что если вы используете неправильный набор символов, вы можете получить ошибку транслитерации.