Oracle仅检索字符串中的数字

时间:2014-08-28 10:43:08

标签: sql oracle

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

e.g。 123abc - > 123(删除字母)

e.g。 123 * - * abc - > 123(删除所有特殊字符)

3 个答案:

答案 0 :(得分:2)

your_string := regexp_replace(your_string, '\D')

答案 1 :(得分:1)

有几种选择,但这应该有效:

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

答案 2 :(得分:0)

试试这个:

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