【问题标题】:How do I remove all characters that aren't alphabetic from a string in PL/SQL?如何从 PL/SQL 中的字符串中删除所有非字母字符?
【发布时间】:2015-11-14 14:21:29
【问题描述】:

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

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

【问题讨论】:

标签: regex oracle plsql


【解决方案1】:

要么:

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

【讨论】:

    【解决方案2】:

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

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

    also answered here for non-numeric chars

    【讨论】:

      【解决方案3】:

      试试这个:

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

      或者

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

      阅读here了解更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-09
        • 2019-03-15
        • 1970-01-01
        • 2014-04-26
        • 2018-12-02
        • 2015-02-26
        • 2013-04-30
        • 2013-01-19
        相关资源
        最近更新 更多