首页 > 解决方案 > 如何在不使用 regexp_like 的情况下从列中获取整数

问题描述

我有一个列XOracle其中包含“a1b2c3”、“abc”、“1ab”、“123”、“156-346”等值

我如何编写一个 sql 查询,它只返回包含X纯数值的数据,例如123,456等。

我无法使用regexp_like,因为我正在使用10g.

标签: sqloracleoracle11goracle10goracle12c

解决方案


这里有两个选项:一个使用正则表达式,另一个使用translate函数。

SQL> with test as
  2    (select 'a1b2c3' col from dual union all
  3     select 'abc'        from dual union all
  4     select '1ab'        from dual union all
  5     select '123'        from dual union all
  6     select '156-346'    from dual
  7    )
  8  select col,
  9    regexp_replace(col, '[^[:digit:]]') result,
 10    --
 11    translate(col, '0'|| translate(col, '$0123456789', '$'), '0') result2
 12  from test;

COL     RESULT  RESULT2
------- ------- -------
a1b2c3  123     123
abc
1ab     1       1
123     123     123
156-346 156346  156346

SQL>

推荐阅读