Oracle:将字符串转换为int

WOP*_*OPR 1 sql oracle plsql

在Oracle中,我有一个包含列(X)的表,它可以包含这样的字符串:

97M
481
101X
88
21E

我想只选择那些x> 90的整数值的行.在这个例子中,我希望得到包含值97M,101X和481的行.我该怎么做?

Oll*_*lie 6

我在使用之前使用REGEXP_REPLACE删除字母字符,TO_NUMBER因此我可以根据需要过滤结果:

WITH t
  AS (SELECT '97F' AS x FROM DUAL
      UNION
      SELECT '481' FROM dual
      UNION
      SELECT '101A' FROM dual
      UNION
      SELECT '101A' FROM dual
      UNION
      SELECT '88' FROM dual
      UNION
      SELECT '21E' FROM dual)
SELECT x
  FROM t
 WHERE TO_NUMBER(regexp_replace(x, '[[:alpha:]]', '')) > 90;

X
101A
481
97F
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你...