Sqlite:如何为BLOB强制转换(数据为TEXT)

pre*_*pii 15 sqlite casting

我有一个sqlite数据库,我想用它从数据类型BLOB中提取一列信息.我在尝试这个:

SELECT cast(data as TEXT) FROM content

这显然不起作用.输出是乱码文本,如下所示:

x??Uak?0?>?8?0Ff;I?.??.i?%?A??s?M

内容列中的数据主要是文本,但也可能有图像(如果我将其转换为TEXT,我认为这可能会导致问题).我只想将该数据提取为可用格式.有任何想法吗?

scr*_*uss 28

您可以使用

SELECT hex(data) FROM content
Run Code Online (Sandbox Code Playgroud)

要么

SELECT quote(data) FROM content
Run Code Online (Sandbox Code Playgroud)

第一个将返回一个十六进制字符串(ABCD),第二个将引用为SQL literal(X'ABCD').

请注意,(当前)没有办法将十六进制列信息转换回SQLite中的BLOB.您将不得不使用C/Perl/Python/...绑定来转换和导入它们.