【问题标题】:PostgreSQL 9.0 replace function not working for one characterPostgreSQL 9.0 替换功能不适用于一个字符
【发布时间】:2011-12-16 12:42:01
【问题描述】:

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

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

(这是查询图像)

(图片已发布)

如果 species 是表格,engname 是字段(字符不同)..

其中一行的内容是

" -tellifer fÂÂ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 进行转换期间,由于 而导致转换失败 所以我想用..替换这个角色 谁能告诉我如何删除那个字符?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

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

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

    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 有 unaccent contrib 模块用于 utf 或一些 8bites 编码有函数 to_ascii()

    【讨论】:

    • 嘿,谢谢你很好的解释,...但是如何替换/删除该字符?..我需要替换/删除它以便 iconv 可以对转储进行编码文件转换为 UTF-8 ..因为 iconv 在遇到该字符时失败。
    • 你必须找到正确的编码,或者为iconv使用-c参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多