首页 > 解决方案 > 如何在 postgreSQL 中将 oracle 转换为_single_byte()

问题描述

甲骨文

select regexp_replace(TO_SINGLE_BYTE('A'),'[^ a-zA-Z]','!!',1,0,'im') from dual;

--> 结果:A

Postgres

select regexp_replace('A','[^ a-zA-Z]',' ','ig'); 

--> 结果:!!

问题:如何在 oracle 和 Postgres 之间获得相同的结果?我想得到像 Oracle 一样的结果。

我试图搜索将这个函数转换为 Postgres 的方法。但答案是 Postgres 中没有功能。

标签: postgresql

解决方案


该字母是 Unicode 代码点 U+FF21(全角拉丁大写字母 A),与您的模式不匹配。

使用该unaccent函数将字符转换为常规字符A

CREATE EXTENSION unaccent;

SELECT ascii(unaccent('A'));

 ascii 
-------
    65
(1 row)

推荐阅读