숫자+문자 조합문자열에서 문자만 추출하는법 0 2 15,042

by 오라클홀릭 [Oracle 기초] [2011.07.01 13:23:03]


문제는  숫자+문자 조합문자열에서 문자만 추출하는 법을 알고싶습니다.

아래와 같은 문자, 숫자 관련되서는 짧게나마 다음과 같이 만들었습니다.
혹 더 좋은 방법이나 오류 있으면 지적 부탁드립니다.

읽어주셔서 감사합니다.



-- 문자로만 이루어진 문자열인지 확인
select c
from (select 'ABCDE' c from dual)
where translate(c, '0123456789', 'A') = c;


-- 숫자로만 이루어진 문자열인지
select c
from (select '12345' c from dual)
where translate(c, '0123456789' || c , '0123456789') = c;


-- 숫자+문자 조합문자열에서 숫자만 추출
select translate(c, '0123456789' || c , '0123456789')
from (select '123ABC' c from dual) t;



 

by 마농 [2011.07.01 15:12:12]
간단하게 잘 만드신것 같네요.
두번째 쿼리는 요방법이 더 간단한듯 하구요
where translate(c, 'a0123456789', 'a') is null

10g 이상이라면 정규식을 사용하는것도 방법이죠.
1. WHERE NOT REGEXP_LIKE(c, '[0-9]')
1. WHERE REGEXP_LIKE(c, '^[^0-9]*$')
2. WHERE NOT REGEXP_LIKE(c, '[^0-9]')
2. WHERE REGEXP_LIKE(c, '^[0-9]*$')
3. SELECT REGEXP_REPLACE(c, '[^0-9]')

by 마농 [2011.07.01 15:34:29]
문자만 추출하는 질문도 있었군요.
4. SELECT REGEXP_REPLACE(c, '[0-9]')
4. SELECT TRANSLATE(c, 'a0123456789', 'a')
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입