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

时间:2015-08-20 19:28:44

标签: regex oracle plsql

我有一个PL / SQL过程,我需要取一个字符串并删除所有不是字母的字符。我已经看过一些示例并阅读有关REGEXP_REPLACE函数的文档,但无法理解它是如何工作的。

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

3 个答案:

答案 0 :(得分:2)

或者:

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) ,意味着将删除所有匹配的字符。)

阅读有关正则表达式的更多信息:

documentation

答案 1 :(得分:0)

试试这个:

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

或者

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

阅读here了解更多信息

答案 2 :(得分:0)

你可以像这样使用正则表达式:

SELECT REGEXP_REPLACE(UPPER('xYztu-123-hello'), '[^A-Z]+', '') FROM DUAL;

also answered here for non-numeric chars