我有一个PL/SQL过程,需要获取一个字符串并去除所有非字母字符。我看过一些示例,并阅读了关于REGEXP_REPLACE函数的文档,但不理解其工作原理。
这不是重复内容,因为我需要删除标点符号,而不是数字。
要么:
select regexp_replace('1A23B$%C_z1123d', '[^A-Za-z]') from dual;
或者:
select regexp_replace('1A23B$%C_z1123d', '[^[:alpha:]]') from dual;
select regexp_replace('123żźć', '[^[:alpha:]]') from dual;
结果:
żźć
回答你关于函数如何工作的问题:第一个参数是源字符串,第二个参数是正则表达式,所有匹配到的内容都将被替换为第三个参数(可选,默认为NULL,意味着所有匹配到的字符将被删除)。
了解更多关于正则表达式的内容:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm
试试这个:
SELECT REGEXP_REPLACE('AB$%c','[^a-zA-Z]', '') FROM DUAL;
或者
SELECT REGEXP_REPLACE( your_column, '[^a-zA-Z]', '' ) FROM your_table;
阅读此处以获取更多信息
你可以像这样使用正则表达式:
SELECT REGEXP_REPLACE(UPPER('xYztu-123-hello'), '[^A-Z]+', '') FROM DUAL;