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