TRIM, RTRIM, LTRIM ( 특정 철자 잘라내기, 오른쪽 철자 잘라내기, 왼쪽철자 잘라내기 )
select 'smith', ltrim('smith', 's'), rtrim('smith', 'h'). trim ('s' from 'smith')
from dual;
설명 : smith 는 데이터가 없음으로 select 절 다음에 ' smith ' 입력 해 준뒤, LTRIM, PTRIM, TRIM 을 해준다.
ltrim( '단어', '철자') 이고 rtrim 도 마찬가지
but , trim은 (' 철자' from '단어') 순으로 코딩 해 주어야 한다.
응용문제 : email 에서 도메인을 출력 하시오
trim 을 사용할때 ' 자르는 단어 ' 를 한 뭉텅이로 보는게 아니고 들어가있는 단어 하나하나를 인식하여 다 자른다
ex) rtrim (rtrim (lower(email), '.com'), '.net') 했을때
주소중 ~~~@nate.com 은 —> ~~~@na 라는 식으로 나온다.
앞에 n이 삭제 되지 않은 이유는 a 가 뒤에있어 잘리지 않았음
그래서 . 을 살리고 com, 과 net 만 삭제하게 되면 앞에있는 . 때문에 뒤에 도메인이 삭제는 되지 않는다.
(1) —> rtrim (rtrim (lower(email), 'com'), 'net')
그다음 골뱅이 다음을 잘라내기위해 substr 을 사용한다. substr (컬럼명, 잘라낼 시작자리번호, 몇개 자를지)
@ 다음의 자리수를 잘라내기 위해 +1 한다.
완성된 식
select rtrim(substr(rtrim(rtrim(email, 'com'),'net'), instr(email, '@')+1),'.')
from emp14;
(4) 마지막에 rtrim 으로 남은 . 을 잘라내준다.
또는 다른 Sql 식
select substr( email, instr(email,'@')+1, instr(email,'.')-instr(email,'@')-1 )
from emp14;
설명 : substr 추출한다 email 을 @ 이 다음숫자부터, 그리고 '.'부터 '@' 이 까지의 사이의 길이 숫자만큼 추출해라
또는
select substr( rtrim( rtrim( replace(email,'.net','.com'),'com' ),'.'), instr(email,'@')+1 )
from emp14;
'Oracle > SQL' 카테고리의 다른 글
SQL 단일행 함수 - 날짜함수 (0) | 2021.11.19 |
---|---|
SQL 단일행 함수 - 숫자함수 (Round, Trunc, Mod)반올림, 숫자버리기, 나누기 (0) | 2021.11.19 |
SQL 단일행 함수 - 문자함수 (Replace), (Lpad, Rpad) 문자 대체하기, 특정철자를 n 개만큼 채우기 (0) | 2021.11.19 |
SQL 단일행 함수 - 문자함수 Instr (특정철자의 위치 출력) (0) | 2021.11.19 |
SQL 단일행 함수 - 문자함수 Length (문자열길이출력) (0) | 2021.11.19 |