【发布时间】:2020-12-13 13:09:42
【问题描述】:
我将二进制数据存储在 bytea 字段中,但在导入期间已将其两次转换为十六进制。如何撤消双重编码?
我的二进制文件以字符“0”开头。在十六进制中是字符 30。在 psql 中,我希望看到以 \x30 开头的字符串,因为默认情况下它会以十六进制显示给我。但我看到的是它以 \x783330 开头,其中“78”是十六进制的“x”,“33”是“3”,“30”是“0”。所以它说存储的字符串是:x30。
我可以通过将文本转换为 bytea 来使情况变得更糟,例如 encode(data, 'hex')::bytea,然后将其转换为 \x373833333330,但我找不到相反的方法。如果我尝试 decode(data::text, 'hex') 它会抱怨 '' 不是有效的十六进制字符串。如果我使用 decode(substring(data::text) from 3), 'hex'),我会取回原来的字符串。
【问题讨论】:
标签: postgresql bytea