我正在使用PostgreSQl 9.0 我有一个表,我需要用''(空格)替换一个字符 因为我正在使用
更新物种集engname = replace(engname,'','');
(这是查询图片)
(图片发布)
如果种类是表格, engname 是字段(字符变化)..
其中一行的竞争是
“-telliferfÃ,Ârthii”
![]()
即使在触发查询后,该字符也不会被替换。 我试过
更新物种集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 进行转换时,由于此转换失败
所以我想用替换这个角色..
谁能告诉我如何删除那个角色?
答案 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()函数