sql将blob读取为文本

时间:2019-01-18 16:29:31

标签: sql excel firebird powerpivot

我试图将名为observation的表字段作为文本输出,并将其存储为blob。 SQL是

select invoice_id, observation from table1

我得到的输出是as.raw(c(0x31, 0xba, 0x20, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x20...

如何输出为文本?

1 个答案:

答案 0 :(得分:0)

如果要将文本保存在斑点中,则应将其设置为blob sub_type text(也称为blob sub_type 1),而不是blob(也称为blob sub_type binary也称为{{1}) }。尽管这不能保证(某些Firebird驱动程序无法区分blob子类型)。

要将二进制blob转换为文本blob,请使用

blob sub_type 0

或没有字符集子句:

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

在两种情况下,字符集子句都是可选的;如果不使用,它将使用连接字符集。请注意,如果使用了错误的字符集,则可能会出现音译错误。