to_ascii()

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

to_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()" 的评论、建议或更正 此处