在PostgreSQL中解码十六进制 - 得到错误“奇数位”

时间:2011-08-07 15:23:04

标签: postgresql

使用此查询时遇到问题:

select decode(to_hex(ascii('ل')::int),'hex')

当我执行它时,我得到:

ERROR: invalid hexadecimal data: odd number of digits

2 个答案:

答案 0 :(得分:2)

decode(..., 'hex')并不意味着将此十六进制数转换为某个值。十六进制编码是字节的特定编码格式,每个八位字节需要两个十六进制数字。另一方面,to_hex将整数转换为十六进制表示,并且可以具有偶数或奇数位数。

所以答案是,你不能这样做(没有一些手动修正)。并且不清楚你为什么要这么做。看起来你可以做'ل'::bytea,但这可能不是你想要的。

答案 1 :(得分:0)

使用这样的东西可能更简单:

select encode('ل','escape');