본문 바로가기
코딩연습/오라클

[SQL]LOWER,UPPER,INITCAP,SUBSTR,REPLACE,PAD,TRIM

by 호아니 2020. 6. 11.

/*
단일행 함수
LOWER : 소문자로 바꾸기
UPPER : 대문자로 바꾸기
INITCAP : 첫자 대문자 나머지는 소문자
*/

 

select UPPER(ename) from emp;
select LOWER(ename) from emp;
select INITCAP(ename) from emp;

select * from emp where UPPER(ename) = upper('KING');

select ename,length(ename) from emp;


/*없는 테이블은 dual로 처리한다, dual에 b를 붙이면 바이트로 표시해줌*/
select length('한글'),lengthb('한글') from dual;
select * from emp where length(job)>=6;

 

/* 중요!!!
SUBSTR(문자열 데이터, 시작위치, 추출길이)
SUBSTR(문자열 데이터, 시작위치)
문자열 일부 추출
*/


select job,substr(job,1,2),substr(job,3,2),substr(job,5) from emp ;
select substr('980419-23',8,1) from dual ;
select ename,SUBSTR(hiredate,1,2) from emp ;


/*특정 문자 위치를 찾는 함수 */
select * from emp where INSTR(ename,'S')>0;

 

/* 중요!!
replace(데이터, 찾는문자(, 대체할 문자)): 특정문자를 다른 문자로 대체
*/select '010-1234-5678' 원본 ,
replace ('010-1234-5678','-',':') 수정1,
replace ('010-1234-5678','-') 수정2 from dual;

 

/*PAD 공백과 관련된 함수*/


select 'Oracle',
LPAD('Oracle',10,'%'), /*왼쪽에 자릿수 맞춰서 공백에 % 문자를 채움*/
RPAD('Oracle',10,'*')
from dual;

select RPAD ('980419-',14,'*'),
RPAD ('010-1234-',13,'#')
from dual;

 

/*두 문자열 데이터를 합치는 함수 concat*/


select concat(empno, ename),concat(empno,concat(':',ename)) from emp;

 

/*특정 문자를 지우는 TRIM([삭제 옵션][삭제할 문자] FROM [원본 데이터(필수)]),STRIM,RTRIM*/


select Trim(' Oracle '),
RTrim(' Oracle '),
LTrim(' Oracle ')
from dual; /*공백 제거*/

select '['||TRIM(' Oracle ')||']' as trim,
'['||TRIM(LEADING FROM'__Oracle__')||']' as trim_leading,
'['||TRIM(TRAILING FROM'__Oracle__')||']' as trim_trailing,
'['||TRIM(BOTH FROM' Oracle ')||']' as trim_both
FROM dual;