我将会过于简单。这是针对Oracle SQL的。我有一个包含USER_ID列的表。
User_id的长度是可变的,并且是VARCHAR。某些用户in中包含字母和数字。有些只有字母。
USER_NAME示例: DAVIDMR和JOHNS5423
我需要两个独立的查询:一个返回没有任何数字的USER_ID,另一个返回USER_ID必须有数字的查询。
我尝试过WHERE USER_ID NOT LIKE '%[0-9]%'的各种排列,但它要么不返回任何记录,要么返回所有记录。
发布于 2017-03-09 01:02:10
您可以使用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',' '));https://stackoverflow.com/questions/42677321
复制相似问题