sql 将 blob 读取为文本
sql read blob as text
我正在尝试将名为 observation
的 table 字段输出为文本,并将其存储为 blob。 SQL 是
select invoice_id, observation from table1
我得到的输出是as.raw(c(0x31, 0xba, 0x20, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x20...
如何输出为文本?
如果您将文本保存在 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
在这两种情况下,字符集子句都是可选的;如果停止,它将使用连接字符集。请注意,如果您使用了错误的字符集,您可能会收到音译错误。
我正在尝试将名为 observation
的 table 字段输出为文本,并将其存储为 blob。 SQL 是
select invoice_id, observation from table1
我得到的输出是as.raw(c(0x31, 0xba, 0x20, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x20...
如何输出为文本?
如果您将文本保存在 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
在这两种情况下,字符集子句都是可选的;如果停止,它将使用连接字符集。请注意,如果您使用了错误的字符集,您可能会收到音译错误。