1

在 Postgres 中,当我想将 varchar 保存到 bytea 列时,可以通过隐式转换轻松实现。所以我可以简单地执行

UPDATE my_table SET my_bytea_col = 'This varchar will be converted' WHERE id = 1;

我经常用这个。但是,我希望偶尔将本专栏的内容视为 varchar。IDE 将为您处理此问题,但我希望在我的用例中返回结果,并将 bytea 转换回 varchar。

当然,在更复杂的选项中,我尝试过类似的方法:

select my_bytea_col::VARCHAR from my_table WHERE id = 1

但是,这不会返回我原来的可读文本。在 postgres 在更新和插入中的隐式转换之后,我还能如何将我的 bytea 转换回原始的 varchar?

4

1 回答 1

3

如果字符串编码是 UTF-8,你可以使用

SELECT convert_from(my_bytea_col, 'UTF8')
FROM my_table
WHERE id = 1;

如果编码不同,您需要提供适当的第二个参数(例如LATIN1)给convert_from.

我可以说我认为将文本字符串存储为 不是一个好主意bytea吗?

于 2020-08-17T14:09:29.877 回答