我目前有一个任务,我必须处理来自很多国家的数据。我的客户给了我一个可接受的字符列表,我们称之为:
'阿伯 =*'
所有其他字符都应更改为“_”。
我知道我的国家特定字符(æøå)的转换,很容易用类似的东西完成
select replace ('Ål', 'Å', 'AA') from dual;
但是我将如何去除所有不需要的“噪音”而不将其拆分为逐个字符的比较?
例如,“bear*2 = fear”应该变成“bear*_ = _ear”,因为 2 和 f 不在接受列表中。
Oracle 10g 及更高版本。作为其中一种方法,您可以使用正则表达式函数regexp_replace()
:
select regexp_replace('bear*2 = fear', '[^aber =*]', '_') as res
from dual
res
------------------------------
bear*_ = _ear
了解有关regexp_replace()
功能的更多信息。