参考https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions027.htm
Oracle 中,可以将一个字符串从一个编码转换为另一个编码的输出。
convert(string, 目标字符集, 源字符集)
例如
SELECT CONVERT('Ä Ê Í Õ Ø A B C D E ', 'US7ASCII', 'WE8ISO8859P1') FROM DUAL; CONVERT('ÄÊÍÕØABCDE' --------------------- A E I ? ? A B C D E ?postgresql支持的转换函数如下
List of functions Schema | Name | Result data type | Argument data types | Type ------------+--------------+------------------+---------------------+-------- pg_catalog | convert | bytea | bytea, name, name | normal pg_catalog | convert_from | text | bytea, name | normal pg_catalog | convert_to | bytea | text, name | normal (3 rows)PostgreSQL支持的转换映射关系如下
postgres=# select * from pg_conversion ; conname | connamespace | conowner | conforencoding | contoencoding | conproc | condefault --------------------------------+--------------+----------+----------------+---------------+--------------------------------+------------ ascii_to_mic | 11 | 10 | 0 | 7 | ascii_to_mic | t mic_to_ascii | 11 | 10 | 7 | 0 | mic_to_ascii | t koi8_r_to_mic | 11 | 10 | 22 | 7 | koi8r_to_mic | t ... utf8_to_shift_jis_2004 | 11 | 10 | 6 | 41 | utf8_to_shift_jis_2004 | t euc_jis_2004_to_shift_jis_2004 | 11 | 10 | 5 | 41 | euc_jis_2004_to_shift_jis_2004 | t shift_jis_2004_to_euc_jis_2004 | 11 | 10 | 41 | 5 | shift_jis_2004_to_euc_jis_2004 | t (132 rows)使用convert_from, convert_to或者直接使用convert即可完成Oracle convert的功能。
例如
select convert('abc中国'::bytea, 'UTF8', 'GBK'); postgres=# select 'abc中国'::bytea; bytea ---------------------- \x616263e4b8ade59bbd (1 row) postgres=# select convert('abc中国'::bytea, 'UTF8', 'GBK'); convert ------------------ \x616263d6d0b9fa (1 row)Count
相关资源:oracle迁移到PostgreSQL社区代码