如何匹配任何地方不包含数字的数据

时间:2012-11-19 15:28:08

标签: sql oracle

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

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

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

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

如果问题不明确,请告诉我。提前谢谢!

2 个答案:

答案 0 :(得分: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

OR

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

答案 1 :(得分: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