【问题标题】:Oracle retrieve only number in stringOracle 只检索字符串中的数字
【发布时间】:2014-08-28 10:43:07
【问题描述】:

在 Oracle pl/sql 中,如何仅从字符串中检索数字。

例如123abc -> 123(删除字母)

例如123*-*abc -> 123(也去掉所有特殊字符)

【问题讨论】:

  • 您在 Google 中的标题 -> 第一个结果:Extract number value from string。第二和第三个结果也可能有帮助。第四,顺便说一句。
  • 你可以使用一个 regular_exp 来达到同样的效果
  • 我有这个字符串 '123ss-21d!28!~' 没有单引号。我想把它设为“1232128”。为什么你们都听不懂?

标签: sql oracle


【解决方案1】:
your_string := regexp_replace(your_string, '\D')

【讨论】:

    【解决方案2】:

    有几个选项,但这应该可行:

    select regexp_replace('123*-*abc', '[^[:digit:]]', '') from dual
    

    这会从输入中删除所有非数字。

    如果在 pl/sql 中使用,您可以对变量进行赋值:

    declare
        l_num number;
        l_string varchar2(20) := '123*-*abc';
    begin
        l_num := regexp_replace(l_string, '[^[:digit:]]', '');
        dbms_output.put_line('Num is: ' || l_num);
    end;
    

    输出:

    Num is: 123
    

    【讨论】:

      【解决方案3】:

      试试这个:

      select regexp_replace(value, '[A-Za-z]') from dual;
      

      【讨论】:

        猜你喜欢
        • 2012-02-24
        • 2015-07-30
        • 1970-01-01
        • 2015-12-08
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多