3장. 오라클 주요 함수
- select에 함수를 사용 : 골라내야 할 때 (열)
- where에 함수를 사용 : 조건, 비교 등을 할 때 (행)
1. DUAL 테이블
- 오라클에서 제공하는 가상의 테이블
- 연산식이나 현재 날짜 등을 확인할 때 사용
- 연산식이나 현재 날짜 등은 select 절에는 기재할 수 있지만 from의 테이블은 없어서 가상의 테이블인 dual을 사용한다.
- 관계형 데이터베이스는 출력할 때 select 구문을 사용하는데 select 절과 from 절 입력이 필수이므로 select에는 조회하고자 하는 연산식이나 현재 날짜를 출력하는 sysdate 등을 쓰고 from에 가상의 테이블인 dual을 사용.
- 나중에 배울 시퀀스를 확인할 때도 이 방법을 사용한다.
--오늘 날짜 조회 select sysdate from dual; |
2. Round 함수
- 반올림을 하는 함수
- 형식
round(값이나 컬럼이름 [,자릿수])
- 자릿수를 생략하면 소수 첫째자리에서 반올림 후 정수 부분만 표시한다.
- 자릿수에 양수를 대입하면 소수를 양수까지 표시한다.
- 자릿수에 음수를 대입하면 정수 자리 반올림이 가능하다.
(※ 자바에서 Math 클래스에 있는 round 메소드도 동일한 기능을 한다)
-- emp 테이블에서 empno 와 sal을 조회. -- sal은 10의 자리에서 반올림해서 100의 자리부터 나오도록 설정 select empno, round(sal,-2) from emp; |
3. upper, lower 함수
- 대문자 또는 소문자료 변경하는 함수.
- 아이디나 검색어의 경우, 대소문자를 구분하지 않는다. 이런 경우 대문자나 소문자로 변경해서 아이디나 검색어를 대조합니다.
select ename,lower(ename) from emp; select upper('ddr') from daul; |
4. length 함수
- 글자수를 세어주는 함수
select length('apple') from dual; select length('오늘은오후에비가옵니다') from dual; |
- length 함수는 1바이트로 글자수를 세고
- lengthb 와 vsize 는 2바이트로 글자수를 센다.
5. substr 함수
- 특정 위치에서 글자를 분할해서 가져오는 함수.
- 형식
substr(대상, 시작위치, 추출할개수)
- 첫번째 매개변수 : 문자열
- 두번째 매개변수 : 시작위치 (음수를 대입할 수 있는데 이 경우 뒤에서부터 센다 : ~로 끝나는 조건을 써야할 때 사용한다.)
- 세번째 매개변수 : 글자 수
select substr('welcome to oracle', 4, 3) from dual; |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
w | e | l | c | o | m | e |
| t | o |
| o | r | a | c | l | e |
select substr('welcome to oracle', -4, 3) from dual; |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
w | e | l | c | o | m | e |
| t | o |
| o | r | a | c | l | e |
실습
6. trim 함수
- 좌우 공백을 제거하는 함수
- 데이터베이스는 문자열을 2가지로 저장하고 있어 따로 봐야하는데
1. 문자길이를 변경할 수 없도록 하는 char : 문자 길이보다 작은 개수를 저장하면 뒤에 공백이 같이 저장됨.
2. 문자길이가 변경되면서 저장되는 varchar(varchar2) : 뒤의 공백을 제거하고 출력하던가 비교해야 함.
char->trim
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
w | e | l | c | o | m | e |
| t | o |
| o | r | a | c | l | e |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
w | e | l | c | o | m | e | t | o | o | r | a | c | l | e |
| |
varchar(varchar2)->trim
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
w | e | l | c | o | m | e |
| t | o |
| o | r | a | c | l | e |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
w | e | l | c | o | m | e | t | o | o | r | a | c | l | e |
7. to_date 함수
- 문자열을 날짜 형식으로 변경해주는 함수
- 형식
to_date(문자열, 날짜서식)
select to_date('2018/09/03', 'yyyy/mm/dd') from dual; |
8. NVL 함수
- null을 대체할 수 있는 함수
- 형식
nvl(null을 가질 수 있는 컬럼이나 연산식, 대체할 값)
--emp 테이블에서 1981년 6월 30일 이후에 입사한 사원의 이름(ename)과 입사일(hiredate) 조회 select ename, hiredate from emp where hiredate >= to_date('1981/06/30', 'yyyy/mm/dd'); --emp 테이블에서 ename과 sal*12+comm 의 값을 조회하시오. comm은 null을 포함할 수 있는 컬럼입니다. select ename, sal*12+nvl(comm,0) from emp; --null 이 포함된 컬럼을 연산할 때 곱셈을 해야 한다면 0이 아닌 1로 바꾸어 주면 된다. |
'프로그래밍 공부&정리 > DataBase' 카테고리의 다른 글
[0904]MySQL (0) | 2018.09.04 |
---|---|
[0904] 데이터베이스(MySQL) (0) | 2018.09.04 |
2장. SQL의 기본 (0) | 2018.08.24 |
데이터베이스(Oracle) 설치 및 사용 (0) | 2018.08.24 |
1장. 데이터베이스 개념과 오라클 설치 (0) | 2018.08.23 |