<활용>
select ascii('A') from dual;
<결과>
ASCII('A')
----------
65
<기본문법>
instr(문자열1, 문자열2)
==> 문자열1로부터 문자열2가 나오는 위치를 반환
instr(문자열1, 문자열2, 숫자1)
==> 문자열1로부터 숫자1인덱스 이후에 나오는 문자열2의 위치를 반환
<활용>
select instr('hello', 'e') from dual; //hello에서 e가 몇번째에 나타나는가?
<결과>
INSTR('HELLO','E')
------------------
2
===> 오라클에서 인덱스는 1번째부터 시작한다.
예제) 모든 사원의 이름과 이메일 그리고 이메일의 @의 위치를 출력하세요.
select ename, email, instr(email, '@') from emp;
예제) 모든 직원의 이름과 이메일 그리고 이메일로부터 @이 나오는 위치와 이메일로부터 @이 나오는 위치 이후에 나오는 .의 위치를 출력
select ename, email, instr(email, '@'), instr(email, '.', instr(email, '@'))
from emp;
<기본문법>
substr(문자열, 시작위치, 길이)
==> 문자열의 시작위치에서 길이만큼 잘라서 반환
예제) 모든 사원의 이름과 사원이름의 첫 글자를 출력해보세요.
select ename, substr(ename, 1, 1) from emp;
<활용>
select replace('hello java', 'hello', '안녕') from dual; // hello를 안녕으로 바꾸기.
<결과>
REPLACE('HELLOJAVA','H
----------------------
안녕 java
예제) 모든 직원의 사원번호, 이름의 첫글자를 출력하세요. 이름의 첫글자는 3칸을 잡아 왼쪽정렬하여 출력하고, 빈칸은 * 로 출력한다.
select eno, rpad(substr(ename, 1, 1), 3, '*')
from emp;
<활용1>
select sysdate from dual;
<결과1>
SYSDATE
--------
22/04/26
<활용2>
select sysdate -1, sysdate, sysdate+1 from dual; // -1하면 어제, +1하면 내일
<결과2>
SYSDATE- SYSDATE SYSDATE+
-------- -------- --------
22/04/25 22/04/26 22/04/27
<기본문법>
to_char(날짜, 형식문자)
yyyy yy 연도
mm 월
d 날
hh 시
mi 분
ss 초
<활용>
select to_char(sysdate, 'yyyy') from dual;
<결과>
TO_CHAR(
--------
2022
<기본문법>
to_date(문자, 형식문자)
<활용>
select to_date('2022/04/26', 'yyyy/mm/dd') from dual;
<결과>
TO_DATE(
--------
22/04/26
<활용>
select add_months(sysdate, 12) from dual;
<결과>
ADD_MONT
--------
23/04/26
<활용>
select last_day(sysdate) from dual;
<결과>
LAST_DAY
--------
22/04/30
예제) 모든 사원의 이름과 근무 개월수를 출력
select ename, hiredate, months_between(sysdate, hiredate)
from emp;
<3개의 테이블에 대한 outer join>
select 컬럼1, 컬럼2
from 테이블1 left outer join 테이블2
on 조건식
left outer join 테이블3
on 조건식;
<<3개의 테이블에 대한 outer join과 다른 조건식>>
select 컬럼1, 컬럼2
from 테이블1 left outer join 테이블2
on 조건식
left outer join 테이블3
on 조건식
where 조건식;
<기본문법>
decode(컬럼, 값1, 결과1, 값2, 결과2, 결과3);
예제) 사원이름과 주민번호 성별을 출력합니다.
select ename, jumin, decode(substr(jumin, 8, 1), '1', '남', '2', '여', '3', '남', '4', '여')
from emp;
<활용>
select name, nvl(phone, '연락처없음') phone from customer;