【发布时间】:2012-09-19 09:16:37
【问题描述】:
我的表中有包含十六进制值的字符串,例如\ffffffc4。一个例子如下:
Urz\ffffffc4\ffffff85dzenie zgodne ze standardem High Definition Audio
以下代码可以将十六进制转换为UTF8:
select chr(x'c4'::int)
它返回Ä,但是当我尝试使用 regexp_replace 时,我遇到了问题。我尝试了以下方法:
select regexp_replace(sal_input, E'\\f{6}(..)',convert(E'\\1','xyz','UTF8'),'g')
其中 XYZ 是 8.2 中提供的各种源编码,但我得到的只是十六进制值。
知道如何在regexp_replace 中使用 chr 函数吗?
使用的版本:x86_64-unknown-linux-gnu 上的 PostgreSQL 8.2.15(Greenplum Database 4.1.1.1 build 1)
提前感谢您的帮助
【问题讨论】:
-
我刚刚意识到我在 SQL 代码中的双反斜杠被转换为单反斜杠。所以,上面的代码应该有 \\ 而不是 \
-
您可以编辑您的帖子以反映这一点。
-
顺便说一句,为什么这么古老的PostgreSQL? Greenplum 跟不上主线版本吗?
-
不确定他们为什么不升级,但我猜这是因为这是一个生产系统并且停机时间是 NO-NO
-
@CraigRinger GP 基于 8.2.15,但某些 Postgres 功能被向后移植(?)/使用,并且从未与 Postgres 社区共享酷炫的增强功能。
标签: regex postgresql hex greenplum