返回行中字段仅包含alpha(无数字)字符



我要过分简化。这是针对Oracle SQL的。我有一个带有USER_ID列的表。

User_id的长度变化,为VARCHAR。一些用户ID中有字母和数字。有些只有字母。

user_name示例:Davidmr和Johns5423

我需要有2个单独的查询:一个返回没有任何数字的User_id,一个user_id必须有一个数字。

我已经尝试了WHERE USER_ID NOT LIKE '%[0-9]%'的各种排列,但是它要么返回任何记录,要么返回所有记录。

您可以使用REGEXP_LIKE

对于没有数字的

select *
from t
where not regexp_like(USER_ID, '[[:digit:]]');

在用户_id中有数字:

select *
from t
where regexp_like(USER_ID, '[[:digit:]]');

另一种方法是使用TRANSLATE

对于没有数字的

select *
from t
where length(user_id) = length(translate(user_id,' 1234567890',' '));

对于在用户_id中具有数字的人:

select *
from t
where length(user_id) <> length(translate(user_id,' 1234567890',' '));

相关内容

  • 没有找到相关文章

最新更新