从Postgres数据中删除十六进制字符

时间:2017-11-23 05:23:09

标签: database postgresql

我有一个使用WIN1252编码的Postgres数据库bg。为了解决UTF8转换问题,我想从我的数据中删除像0x9D这样的值。如何从comments中的bg.bg."DEV"列中删除这些值?

基于this question,我尝试过:

UPDATE bg.bg."DEV"
SET "comments" = REPLACE(comments, X'9D','') 
WHERE "comments" like '%'||x'9D'||'%';

但是这会引发:

ERROR:  "%" is not a valid binary digit
LINE 3: WHERE "comments" like '%'||x'9D'||'%';
                              ^

2 个答案:

答案 0 :(得分:0)

如果您希望在评论栏中匹配0x9D。 where子句应该是

WHERE "comments" like '%0x9D%'

答案 1 :(得分:0)

最后我能够使用以下内容:

UPDATE tablename SET field=replace(field, chr(x'9D'::int), '')
WHERE strpos(field,chr(x'9D'::int))>0;

根据dba.stackexchange

上的这个问题