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

时间:2017-03-08 16:57:16

标签: sql oracle

我会过度简化。这适用于Oracle SQL。我有一个包含USER_ID列的表格。

User_id的长度不同,为VARCHAR。某些用户ID中包含字母和数字。有些只有字母。

USER_NAME示例:DAVIDMR和JOHNS5423

我需要有两个单独的查询:一个返回USER_ID,其中没有任何数字,另一个USER_ID必须有一个数字。

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

1 个答案:

答案 0 :(得分:3)

您可以使用REGEXP_LIKE

对于那些没有user_id数字的人:

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

用于在user_id中包含数字:

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

另一种方法是使用TRANSLATE

对于那些没有user_id数字的人:

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

对于user_id中有数字的人:

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