如何在PL/SQL中从字符串中删除所有非字母字符?

4

我有一个PL/SQL过程,需要获取一个字符串并去除所有非字母字符。我看过一些示例,并阅读了关于REGEXP_REPLACE函数的文档,但不理解其工作原理。

这不是重复内容,因为我需要删除标点符号,而不是数字。


2
可能是重复的问题:Oracle查询 - 仅获取选择字段中的字符串 - kevinskio
regexp_replace(你的列, '[a-zA-Z]', '') - Mihai
3个回答

4

要么:

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


0

试试这个:

SELECT REGEXP_REPLACE('AB$%c','[^a-zA-Z]', '') FROM DUAL;

或者

SELECT REGEXP_REPLACE( your_column, '[^a-zA-Z]', '' ) FROM your_table;

阅读此处以获取更多信息


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接