본문 바로가기

JAVA/Oracle

오라클이 제공하는 문자열 관련 함수를 이용한 자료 검색

반응형

오라클이 제공하는 문자열 관련 함수를 이용한 자료 검색



** 문자열과 관련한 함수

trim  양쪽공백지우기

ltrim 왼쪽공백지우기

rtrim 오른쪽공백지우기


upper 대문자로바꾸기

lower 소문자로바꾸기


substr(컬럼명, 시작인덱스, 글자수)  // 매개변수가 3개 들어감

시작인덱스는 1부터 시작

예) 

select substr('abcdefg' , 1, 2) from dual;

결과값 ==> ab


연습)

우리회사에 근무하는 여성근무자들한테 특별휴가를 주려고 한다.

대상자의 사원번호, 사원명, 부서명을 검색하시오.

단, 부서명순으로 검색하되 동일할때에는 사원명순으로 나타내시오.


select no, name, dname from emp where substr(jumin,8,1) = '2' order by dname, name;


위에 문제에 추가적으로

2000년대 이후 출생자는 남자3, 여자4

외국인은 남자5,여자6

외국인 2000년대 이후 출생자는 남자7,여자8

1800년대 출생자 남자9,여자0 

값이 있을때의 질의문


select no, name, dname from emp where substr(jumin,8,1) in ('2','4','6','8''0') order by dname, name;


문제를 위한 상황 만듬

insert into emp values ('128', '쥴리아','개발1부',sysdate,'010-1242-4489',100,'사원','h1293jpg','서울시 마포구','820202-6234777');

insert into emp values ('129', 'JULLA','개발2부',sysdate,null,500,'대리',null,null,null);

insert into emp values ('130', 'Julla','총무부',sysdate,null,700,'대리',null,null,null);

insert into emp values ('131', '     Julla','개발2부',sysdate,null,300,'사원',null,null,null);

insert into emp values ('132', '     julla','개발2부',sysdate,null,400,'사원',null,null,null);


**근무자이름이 julla인 근무자의 모든 정보를 검색

select * from emp where name = 'julla'; // 한명만 나옴

select * from emp where trim(name) = 'julla'; // 공백을 다 없애고 결과값 출력해 두명나옴

select * from emp where lower(trim(name)) = 'julla'; // 공백 다 없애고 소문자로 다 바꿔 달라고 결과값 출력해 다 나옴


instr(컬럼이름|문자열값, '문자') 

==> 문자가 컬럼에서 몇번째 값에 해당되는지 위치값을 반환함

입력값이 포함되있지 않다면 '0'을 반환한다.

예)

select instr('abcdefg' , 'd') from dual; // 결과값 : 4 (있는것)

select instr('abcdefg' , 'k') from dual; // 결과값 : 0  (없는것)


select instr('kkkkdabc','d') from dual;

// 'd' 바로 다음 문자 출력

'kkkkdabc' 글자중에

select substr('kkkkdabc',instr('kkkkdabc','d')+1, 1) from dual;

// 결과값 : 'a' 출력됨


연습)

모든근무자의 사원번호, 사원명, 아이디를 검색하시오.

select no, name, substr(email,1,instr(email, '@')-1) from emp;

반응형