sql читать blob как текст - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь вывести поле таблицы с именем observation в виде текста, где оно хранится в виде BLOB-объекта. SQL это

select invoice_id, observation from table1

Я получаю вывод as.raw(c(0x31, 0xba, 0x20, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x20...

Как вывести текст в виде текста?

1 Ответ

0 голосов
/ 18 января 2019

Если вы сохраняете текст в 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

В обоих случаях предложение набора символов является необязательным; он будет использовать набор символов соединения, если он выключен. Помните, что если вы используете неправильный набор символов, вы можете получить ошибку транслитерации.

...