PostgreSQL 9.0替换函数不适用于一个字符

时间:2011-12-15 11:57:23

标签: postgresql

我正在使用PostgreSQl 9.0 我有一个表,我需要用''(空格)替换一个字符 因为我正在使用

  

更新物种集engname = replace(engname,'','');

(这是查询图片) enter image description here

(图片发布) this is the character

如果种类是表格, engname 是字段(字符变化)..

其中一行的竞争是

  

“-telliferfÃ,Ârthii”   enter image description here

即使在触发查询后,该字符也不会被替换。 我试过

  

更新物种集sciname = regexp_replace(sciname,'','')   但角色没有得到替换

我的数据库

   CREATE DATABASE myDB
   WITH OWNER = Myadmin
   ENCODING   = 'SQL_ASCII'
   TABLESPACE = pg_default
   LC_COLLATE = 'C'
   LC_CTYPE = 'C'
   CONNECTION LIMIT = -1;

我们计划采用UTF-8编码,但在使用 iconv 进行转换时,由于此enter image description here转换失败 所以我想用替换这个角色.. 谁能告诉我如何删除那个角色?

1 个答案:

答案 0 :(得分:2)

此符号可用于更多字符 - 因此您无法使用替换。您的客户端应用程序可能使用与数据库不同的编码。符号用于表示信号破碎编码。

解决方案正在使用正确的编码

postgres=# select * from ff;
       a       
───────────────
 žluťoučký kůň
(1 row)

postgres=# set client_encoding to 'latin2'; --setting wrong encoding
SET
postgres=# select * from ff; -- and you can see strange symbols
       a       
───────────────
 �lu�ou�k� k�
(1 row)

postgres=# set client_encoding to 'utf8'; -- setting good encoding
SET
postgres=# select * from ff;
       a       
───────────────
 žluťoučký kůň
(1 row)

其他解决方案是用相关的ascii字符替换国家或特殊字符

9.x有utf的unaccent contrib模块或者一些8bites编码有to_ascii()函数