나의 생각을 끄적이는 공간

블로그 이미지

Wooni0477

카테고리

  • 분류 전체보기 (118)
    • 프로그래밍 정리 (102)
      • Front (5)
      • Java (2)
      • JSP, Servlet, DB(oracle) (33)
      • JavaScript (0)
      • Spring (22)
      • Oracle (28)
      • Vue (1)
      • API (1)
      • err (5)
      • ERD (1)
      • etc.. (4)
    • BoostCourse (15)
      • HTML/CSS (7)
      • JavaScript (4)
      • JSP (4)
    • 공부 자료들.. (0)
    • 기타 (0)
    • --------------------------- (0)
    • 끄적이는공간.. (0)
      • 이벤트 (0)
      • 여행 (0)

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

Oracle 기본정리 - 문자함수3(substr, trim, pad, instr, like)

프로그래밍 정리/Oracle 2019. 11. 29. 11:13
반응형

Oracle 기본정리 - 문자함수3(substr, trim, pad, instr, like)


-- TIP
-- select 검색시 대소문자 구분한다.
-- select 출력 시 : 숫자=오른쪽정렬, 문자열 = 왼쪽정렬



--substr('문자열',int)
--substr('문자열',int,int)
--맨앞은 0으로 시작한다.
-- (0,1)은 맨앞, (-1)은 맨뒤를 얘기한다.
select substr('abcdefg',2,3), substr('abcdefg',-1,3), substr('abcdefg',-7,3) from dual;
--ltrim('문자열') 왼쪽 공백 제거

select ltrim('    he              llo    ') || 'abc' from dual;
--ltrim('문자열1','문자열2') 문자열2 선택 제거, 순서상관없음, 왼쪽부터 다른문자열 만나는순간 멈춤

select ltrim('abcabca','a') from dual; --출력 : bcabca
select ltrim('abcabcabcd','abc') from dual; --출력 : d
select ltrim('abcacbdef','abc') from dual; --출력 : def

--rtrim('문자열') 오른쪽 공백 제거

select rtrim('    he              llo    ' )|| 'abc' from dual;

--rtrim('문자열1','문자열2') 문자열2 선택 제거, 순서상관없음, 오른쪽부터 다른문자열 만나는순간 멈춤


select rtrim('abcabca','a') from dual; --출력 : abcabc
select rtrim('cdabcabcab','abc') from dual; --출력 : cd
select rtrim('abcacbkkabc','abc') from dual; --출력 : abcacbkk

--trim('문자열') 양쪽 공백 제거

select trim('    he    llo    ') || 'abc' from dual; --출력 : he    lloabc

--trim(명령어 '문자열1' from '문자열2') 명령어 종류는 leading, trailing, both 3개가 있다.

select trim(leading 'a' from 'abcdabc') from dual; --ltrim과 같다.
select trim(trailing 'a' from 'abcdabc') from dual; --rtrim과 같다.
select trim(both 'a' from 'abcdabc') from dual; --trim과 같다.

--lpad('문자열', 숫자,'채울문자') 문자열 왼쪽에 채울문자를 숫자만큼 채워준다.
select lpad('abc',5,'*#') from dual; --출력 : ##abc
select lpad('hong',10,'#') from dual; --출력 : ######hong

--rpad('문자열', 숫자,'채울문자') 문자열 오른쪽에 채울문자를 숫자만큼 채워준다.

select rpad('a',10,'#') from dual; --출력 : a#########

--instr('문자열','index문자열') index문자열을 왼쪽부터 찾은 첫번째 index값 출력

select instr('abcdabcdabcd','a') from dual; --출력 : 1
select instr('abcdabcdabcd','c') from dual; --출력 : 1


--instr('문자열1','index문자열',숫자) index문자열을 숫자부터 찾은 첫번째index값 출력

select instr('abcdabcdabcd','c',5) from dual; --출력 : 7

--instr('문자열1','index문자열',숫자1,숫자2) index문자열을 숫자1*숫자2 번째 부터 index값 출력
select instr('abcdabcdabcd','a',5,2) from dual; --출력 : 9

--instr('문자열1','index문자열',숫자1,숫자2) 숫자1 <0 이면 오른쪽 부터 찾음
select instr('bbbbbbbabbb','a',-6) from dual; --출력 : 9





---------------------------------------------------------------------문제풀어보기------------------------------------------------------------------
--문제 A가 두번째인 사원 검색

select * from emp where ename like '_A%';

--문제 E가 마지막두째자리 사원 검색
select empno, ename, sal*12+nvl(comm,0), hiredate from emp where ename like '%E_'; --방법1
select empno, ename, sal*12+nvl(comm,0), hiredate from emp where substr(ename,-2,1) = 'E'; --방법2

--문제 월급*12+comm 을 1000 반올림 나타내기, 반올림한 후 그 값 만큼 *표시

--방법1
select empno, ename, trim(rpad( ' ' , round( (sal*12+nvl(comm,0))/1000,0 )+1 ,'*')) as sal,round( (sal*12+nvl(comm,0))/1000,0 ) as temp_sal, hiredate from emp where hiredate between '81-01-01' and '81-12-31'

--방법2
select empno, ename, trim(rpad( ' ' , round( (sal*12+nvl(comm,0))/1000,0 )+1 ,'*')) as sal,round( (sal*12+nvl(comm,0))/1000,0 ) as temp_sal, hiredate from emp where hiredate like '81/__/__';

--방법3
select empno, ename, trim(rpad( ' ' , round( (sal*12+nvl(comm,0))/1000,0 )+1 ,'*')) as sal,round( (sal*12+nvl(comm,0))/1000,0 ) as temp_sal, hiredate from emp where substr(hiredate,1,2) = '81';



--문제 emp테이블에서 s가 포함된 사원을 출력
select * from emp where instr(ename,'S') > 0; --방법1
select * from emp where ename like '%S%'; --방법2

--세번째가 R인 이름 출력

select * from emp where ename like '__R%'; --방법1
select * from emp where substr(ename,3,1) = 'R'; --방법2
select * from emp where instr(ename,'R',3)=3; --방법3


반응형
저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 정리 > Oracle' 카테고리의 다른 글

Oracle 기본정리 - 함수5(decode, case when)  (0) 2019.11.29
Oracle 기본정리 - 날짜,문자 함수4(sysdate, to_char, to_date, to_number, add_months, next_day)  (0) 2019.11.29
Oracle 기본정리 - 문자함수2(concat, inicap,lower,upper, length,lengthB, substr)  (0) 2019.11.29
Oracle 기본정리 - 기본함수1(abs,ceil,floor,exp,log,mod,power,round,trunc)  (0) 2019.11.29
Oracle 기본정리 - select, where 절, 와일드 카드, 날짜  (0) 2019.11.29
Posted by Wooni0477
방명록 : 관리자 : 글쓰기
Wooni0477's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

나의 생각을 끄적이는 공간

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (118)
    • 프로그래밍 정리 (102)
      • Front (5)
      • Java (2)
      • JSP, Servlet, DB(oracle) (33)
      • JavaScript (0)
      • Spring (22)
      • Oracle (28)
      • Vue (1)
      • API (1)
      • err (5)
      • ERD (1)
      • etc.. (4)
    • BoostCourse (15)
      • HTML/CSS (7)
      • JavaScript (4)
      • JSP (4)
    • 공부 자료들.. (0)
    • 기타 (0)
    • --------------------------- (0)
    • 끄적이는공간.. (0)
      • 이벤트 (0)
      • 여행 (0)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바