我得到answer来检查PostgreSQL文本列中的某个BOM。我真正想做的是将有更多的东西一般情况下,即像如何将PostgreSQL转义bytea转换为十六进制bytea?
select decode(replace(textColumn, '\\', '\\\\'), 'escape') from tableXY;
一个UTF8 BOM的结果是:
\357\273\277
这是八进制BYTEA,可以通过切换转换BYTEA的输出中的pgAdmin:
update pg_settings set setting = 'hex' WHERE name = 'bytea_output';
select '\357\273\277'::bytea
结果是:
\xefbbbf
我希望得到的结果是一个查询,例如
update pg_settings set setting = 'hex' WHERE name = 'bytea_output';
select decode(replace(textColumn, '\\', '\\\\'), 'escape') from tableXY;
但这并不奏效。结果是空的,可能是因为解码无法处理十六进制输出。
SELECT encode(convert_to(textColumn, 'UTF-8'), 'hex') from tableXY;
它不依赖于bytea_output
:
可以通过encode('\ 357 \ 273 \ 277':: bytea,'hex')'进行转换,但是我不会将它与其他查询结合使用,即'select encode (从tableXY解码(replace(textColumn,'\\','\\\\'),'escape'):: bytea,'hex');'不起作用。 – jan
您可以通过告诉您的PG版本以及更多关于'show standard_conforming_strings'的结果来设置上下文吗? –
另外,你是否期望这个'decode(...,'escape')'应用于任何类型的匹配特定语法的字符串或字符串? (在前一种情况下,我相信你是在错误的轨道上开始) –