如果我的专栏有John1,John,Jo1hn,1John ..我必须写一个只提取John的查询,即在任何地方没有数字。
我已经使用regexp_like尝试了多个选项,并且下面的查询接近
select * from table where regexp_like(column,'[^[:digit:]]+$');
但它只消除了John1,其中1为最后一个字符,而不是其他字符。
如果问题不明确,请告诉我。提前谢谢!
答案 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