Oracle 2-2
문자처리 함수
select upper('abecdef'), lower('abcdef') ,initcap('abddsd') from dual;
upper: 대문자로 변환
lower : 소문자로 변환
select empno, ename, job from emp where lower(job)='manager'; //컬럼의 속성이 대문자일경우 검색시 lower(컬럼명)을 쓰면 소문자로 검색이 가능하다. 반대로 upper('manager')해줘도 된다.
initcap:맨앞글자만 대문자 나머지 대 소문자로 처리
select length('안녕하세요') from dual; //글자의 길이 추출
select lengthb('안녕하세요') from dual;//글자의 바이트 추출
substr:문자열의 일부만 추출하는 함수
select substr('abcdefg',2) from dual; //두번째 자리부터 끌까지 추출
select ename from emp where substr(ename,-1,1) like 'E'//ename컬럼의 마지막 문자 한개만 추출해서 이름이 e로 끝나는 사원을 검색
select substr('abcdefg',2,5) from dual; //두번째 자리부터 다섯번째까지 추출
select ename, hiredate from emp;
select ename, substr(hiredate,1,2) from emp where substr(hiredate,1,2)=80;
->80년생만
Q.emp테이블에서 ename의 두번째 시작 문자가 A인 자료를 추출하세요
A1. select ename from emp where substr(ename,2,1)='A'
A2. select ename from emp where ename like '_A%';
Q.emp 테이블에서 ename의 끝에서 두번째 문자가 E인 자료를 추출하세요.
A1. select ename from emp where substr(ename,-2,1)='E';
A2. select * from emp where ename like '%E_';
instr:특정 문자의 위치를 구하는 함수
select instr('abcdefgabc','c') from dual; //해당하는 글자가 있는 자릿수를 추출(첫번째로 검색된 c의 자리수만 추출함
select instr('WELCOME TO ORACLE','O',3,2) from dual; //문자열에 3칸 이동 후 o가 두번쨰 나오는 자리
select instr('hello world hi haha','h',4) from dual; //문장에 h부터 4자리간후 다시h를 만나는 자리의 총자리수
select instr('hello world hi haha','h',4,2) from dual; //문장에 h부터 4자리 간 후 2번째 h를 만나는 자리의 총 자리
Q.이름의 세번쨰 자리가 r로 끝나는 사원을 검색
a1.select empno,ename from emp where ename like '__R%'a2.(instr이용)
select empno, ename from emp where instr(ename,'R',3,1)=3;
a3.(substr이용)
select empno, ename from emp where substr(ename,3,1) = 'R';
king@naver.com hahahoho@hanmail.net pppp@gmail.com 출력 ->id 회사 .net
select substr(mail,1,instr(mail,'@')-1), substr(mail,instr(mail,'@')+1,instr(mail,'.')-1) from t1
rpad와 lpad : 자릿수만큼 원하는 문자로 채워주기!
select lpad('123',20,'*')from dual; //20글자자리수에서 왼쪽에 **채우고 나머지 3자리에는 123을 채움
select rpad('123',20,'*')from dual //20글자자리수에서 오른쪽에 **채우고 나머지 3자리에는 123을 채움
select empno,ename,sal,rpad('*',round(sal/100),'*') from emp //sal를 100으로 나눈 정수의 값만큼 *을 생성
trim:공백문자를 삭제하는 함수(RTRIM,LTRIM,TRIM(양쪽다 공백제거))
select ltrim(' abcd ')from dual; //왼쪽 공백문자 제거후 보여줌
select ltrim(' abcd ')from dual; //왼쪽 공백문자 제거후 보여줌
select length(rtrim(' oracle ')) from dual //오른쪽 공백 제거후 길이 출력
select ltrim('abcdefg','a') from dual //왼쪽끝에있는 a제거
select ltrim('abcdefg','d') from dual //d가 문자사이에 있어서 제거못함
select trim(leading 'a' from 'abcdefg')from dual; //문자열이 a로 시작하면 a로 깎아라~
select trim(trailing 'a' from 'abcdefgaa')from dual; //문자열이 a로 끝나면 a로 깎아라~
select trim(both 'a' from 'abcdefgaa')from dual; //문자열 끝 양쪽에 a가 있으면 깎아라~
select substr(mail,1,instr(mail,'@')-1) ID, substr(mail,instr(mail,'@')+1,instr(mail,'.')-1 - instr(mail,'@')), substr(mail,instr(mail,'.')+1,3) from t1
//
select substr(mail,1,instr(mail,'@')-1) ID, substr(mail,instr(mail,'@')+1,instr(mail,'.')-1 - instr(mail,'@')), substr(mail,instr(mail,'.')+1,3) from t1
select substr(mail,1,