1

如果我的专栏有 John1, John, Jo1hn, 1John..我必须编写一个只提取 John 的查询,即在任何地方都没有数字

我已经用 regexp_like 尝试了多个选项,下面的查询接近了

select * from table where  regexp_like(column,'[^[:digit:]]+$');

但它只是消除了最后一个字符为 1 的 John1,而不是其他字符。

如果问题不清楚,请告诉我。提前致谢!

4

2 回答 2

2

让我们试试这个方法:

SQL> with t1(col) as(
  2    select 'John1' from dual union all
  3    select 'John'  from dual union all
  4    select 'Jo1hn'  from dual union all
  5    select '1John' from dual
  6  )
  7  select *
  8    from t1
  9  where regexp_like(col, '^[^[:digit:]]+$')
 10  ;

COL
-----
John

或者

SQL> with t1(col) as(
  2    select 'John1' from dual union all
  3    select 'John'  from dual union all
  4    select 'Jo1hn'  from dual union all
  5    select '1John' from dual
  6  )
  7  select *
  8    from t1
  9  where regexp_like(col, '^[[:alpha:]]+$')
 10  ;

COL
-----
John
于 2012-11-19T15:31:41.800 回答
1

你也可以使用NOT

SQL> SELECT *
  2    FROM (SELECT 'John1' txt FROM dual
  3          UNION ALL
  4          SELECT 'John' FROM dual
  5          UNION ALL
  6          SELECT 'Jo1hn' FROM dual
  7          UNION ALL
  8          SELECT '1John' FROM dual)
  9   WHERE NOT regexp_like(txt, '[[:digit:]]');

TXT
----
John
于 2012-11-19T15:41:41.023 回答