将bytea转换回varchar

时间:2020-08-17 13:54:20

标签: postgresql

在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?

1 个答案:

答案 0 :(得分:3)

如果字符串编码为UTF-8,则可以使用

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

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

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