to_ascii()

用于将字符串从其他编码转换为 ASCII 编码的系统函数

to_ascii() 是一个系统函数,用于将字符串从少数其他编码转换为 ASCII 编码。

to_ascii() 添加于 PostgreSQL 7.1

用法

to_ascii(string TEXT)
to_ascii(string TEXT, encoding NAME)
to_ascii(string TEXT, encoding INTEGER)

实际上,第一个形式,它默认使用当前数据库编码,是唯一实用的变体。

支持从以下编码进行转换:

编码 编号
LATIN1 8
LATIN2 9
LATIN9 16
WIN1250 29

PostgreSQL 文档没有指定上述表格中记录的编码编号;这些编号对应于 src/include/mb/pg_wchar.h 中定义的 pg_enc 枚举中的匹配值。

Contrib 模块 unaccent 提供更灵活的选择范围来实现相同目标。

变更历史

示例

基本用法

asciitest=# SELECT to_ascii('überbewertete äthiopische Ödnis');
            to_ascii             
---------------------------------
 uberbewertete athiopische Odnis
(1 row)

分别使用编码名称和编号得到相同结果

asciitest=# SELECT to_ascii('überbewertete äthiopische Ödnis', 'LATIN1');
            to_ascii             
---------------------------------
 uberbewertete athiopische Odnis
(1 row)

asciitest=# SELECT to_ascii('überbewertete äthiopische Ödnis', 8);
            to_ascii             
---------------------------------
 uberbewertete athiopische Odnis
(1 row)

尝试从不支持或无效的编码进行转换

asciitest=# SELECT to_ascii('ü', 'EUC_JP');
ERROR:  encoding conversion from EUC_JP to ASCII not supported

asciitest=# SELECT to_ascii('ü', 19);
ERROR:  encoding conversion from WIN1258 to ASCII not supported

asciitest=# SELECT to_ascii('ü', 99);
ERROR:  99 is not a valid encoding code

to_ascii() 在不在支持的编码中的数据库中执行时会产生垃圾输出

postgres=# \l postgres
                               List of databases
   Name   |  Owner   | Encoding |   Collate   |    Ctype    | Access privileges 
----------+----------+----------+-------------+-------------+-------------------
 postgres | postgres | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 | 
(1 row)

postgres=# SELECT to_ascii('äü');
 to_ascii 
----------
 A A 
(1 row)

分类

语言环境和字符集处理系统函数

另请参见

unaccent

反馈

提交有关 "to_ascii()" 的任何评论、建议或更正 此处