2012-11-09 3 views
2

내 테이블에 varchar이고 영숫자, 숫자 및 혼합 영숫자 값이 들어있는 필드가 있습니다.영문자 만 선택 3 자 길이의 문자열

해당 필드의 길이와 영문자 만 3자인 값만 선택하고 싶습니다.

저는 Oracle을 사용하고 있습니다.

샘플 데이터 :

AAA 
BBB 
12345 
CCC25 
DDDDD 

SELECT 문은 반환해야합니다 :

AAA 
BBB 

나는 다음을 시도하고 작동하지 않았다. 이것은 아무것도 반환하지 않았다.

select name from MyTable where name like '%%%'; 

답변

7

당신은 regexp_like 기능

SQL> with x as (
    2 select 'aaa' str from dual union all 
    3 select 'bbb' from dual union all 
    4 select '12345' from dual union all 
    5 select 'CCC25' from dual union all 
    6 select 'DDDDD' from dual 
    7 ) 
    8 select * 
    9 from x 
10 where regexp_like(str, '^[[:alpha:]]{3}$'); 

STR 
----- 
aaa 
bbb 
+0

를 사용할 수 평균을 수행

select name from MyTable where name like '[a-Z][a-Z][a-Z]'; 

그때 나는 모든 3 자에게 긴 결과를 반환 생각하고 그냥 돌려 모든 것을 수행하면 시도 위에서 2-6 행과 같이 테이블의 각 값에 대해 select 문을 써야합니까? 나는 수천 개의 행 (64000을 정확하게 표현)을 가지고있다. – Susie

+0

예입니다. select에서 코드를 사용하십시오. 여기서 x는 테이블 이름이고 str은 열입니다. – sufleR

+2

@javaStudent - 직접 가지고있는 테이블을 쿼리 할 수 ​​있습니다 (WITH 테이블을 완전히 없애거나 내가 작성한 쿼리를 실제 테이블과 바꾸기) . 우리가 테이블이나 데이터에 접근 할 수 없으므로 쿼리를 작동하는 가장 간단한 방법은 실제로 우리에게 준 데이터를 수동으로 어셈블하는'WITH' 하위 쿼리를 조합하는 것입니다. –

관련 문제