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

标签 database postgresql

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

基于 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'||'%';
                              ^

最佳答案

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

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

根据 dba.stackexchange 上的这个问题

关于database - 从 Postgres 数据中删除十六进制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47448115/

相关文章:

sql - Rails 搜索 SQL 查询

php - 如何在数据库中保存php套接字资源?

ruby-on-rails - 从 Rails 控制台获取 "SQLite3::CorruptException: database disk image is malformed"

database - DBIx::Class::Schema::Loader: make_schema_at 没有找到任何关系

perl - localtimestamp 总是返回相同的值

postgresql - 如何在 SQLAlchemy 中使用复合数据类型(例如 geomval)?

database - 我怎样才能在 laravel Eloquent 中获取这些信息

sql - 主键也是星型模式中的外键。是好是坏?

sql - 仅将表用于多重继承是一种不好的做法吗?

sql - libpq 调用给出 "UTF8": 0xe6 0x62 0x40