Day29. 230609
- dual : 결과물 하나만 보여줌.
1
2
3
4
5
6
7
|
select empno, ename, sal, sal*12
from emp
where empno=7369;
select empno, ename, sal, sal*12
from emp
where empno='7369';
|
cs |
위 아래 같은 결과.
위의 7369의 값 오라클에서 암묵적으로 바꿔줌.
숫자 함수
abs(절댓값)
1
2
|
select ceil(10.523),floor(10.123)
from dual;
|
cs |

round(숫자[,자릿수]), trunc(숫자[,자릿수])
round(숫자[,자릿수]) : 반올림
자릿수 : 소수 1째자리(기본.0), 소수2번째자리(1), 소수3번째자리(2), 일의자리(-1), 십의자리(-2)
1
2
3
4
|
select round(418.525,-2),round(418.525,-1),
round(10.525),round(10.525,0),
round(10.525,1),round(10.525,2),round(10.525,3)
from dual;
|
cs |
trunc(숫자[,자릿수]) : 절삭
자릿수 : 소수 1째자리(기본.0), 소수2번째자리(1), 소수3번째자리(2), 일의자리(-1), 십의자리(-2)
1
2
3
4
|
select trunc(418.525,-2),trunc(418.525,-1),
trunc(10.525),trunc(10.525,0),
trunc(10.525,1),trunc(10.525,2),trunc(10.525,3)
from dual;
|
cs |

예제)
전체사원 평균급여를 올림, 내림, 소수점 첫번째 자리까지 출력
1
2
|
select avg(sal),ceil(avg(sal)),floor(avg(sal)),round(avg(sal),0)
from emp;
|
cs |
문자함수
INITCAP(char) , LOWER(char) , UPPER(char)
ciel(올림)
INITCAP(char) : char의 첫 문자는 대문자로, 나머지는 소문자로 반환
LOWER(char) : char의 매개변수로 들어오는 문자를 모두 소문자로 반환
UPPER(char) : char의 매개변수로 들어오는 문자를 모두 대문자로 반환
1
2
3
4
|
select ename, initcap(ename), lower(ename), upper(lower(ename))
from emp
where deptno=30
order by ename asc;
|
cs |
연결연산자 ||
1
2
3
4
|
select ename || '귀하', concat(ename,'귀하')
from emp
where deptno=30
order by ename asc;
|
cs |
-> 모두 결과가 동일하게 나옴.
substr(char, pos, len) , substrb(char, pos, len)
substr(char, pos, len)
중요!★★★★★
- 문자열의 부분 추출
- 문자열 char을 대상으로 position부터 length만큼 추출
- pos이 0이 오면 디폴트 값인 1.즉 첫 번째 문자를 가리킨다.
- pos이 음수가 오면 문자열char의 가장 맨 끝에서 시작한 상대적 위치를 의미
- len이 생략되면 position부터 문자열 끝까지 반환
1
2
3
4
|
select substr('abcdefg',0),substr('abcdefg',1),
substr('abcdefg',1,3),substr('abcdefg',-1,3),
substr('abcdefg',5,3),substr('abcdefg',-3,3)
from dual;
|
cs |
substrb(char, pos, len)
문자열의 바이트(BYTE) 수만큼 잘라낸 결과를 반환.
1
2
3
4
5
6
|
select substrb('대한1a A!',0),substrb('대한1a A!',1), --대한1a A!,대한1a A!
substrb('대한1a A!',1,3),substrb('대한1a A!',-1,3), --대,!
substrb('대한1a A!',4,7),substrb('대한1a A!',-3,3), --한1a A, A!
LENGTH(substrb('대한1a A!',4,7)), --5
LENGTH(substrb('대한1a A!',-3,3)) --3
from dual;
|
cs |
참고) LENGTH(): 출력되는 문자의 길이
LTRIM(char, set) , RTILM(char, set) , TRIM()
LTRIM(char, set) : 매개변수로 들어온 char 문자열에서 set으로 지정된 문자열을
왼쪽 끝에서 제거한 수 나머지 문자열을 반환
RTRIM(char, set) : 매개변수로 들어온 char 문자열에서 set으로 지정된 문자열을
오른쪽 끝에서 제거한 수 나머지 문자열을 반환
TRIM() : 좌우의 공백 제거
1
2
3
|
select LTRIM('OracleceO','O'),RTRIM('OracleceO','O'),
TRIM(' Oracle ceO ')
from dual;
|
cs |
LPAD(exp1,n.expr2) , RPAD(exp1,n.expr2)
LPAD(exp1,n.expr2) : exp2문자열을 n자리만큼 왼쪽부터 채워 exprq을 반환하는 함수
RPAD(exp1,n.expr2) : exp2문자열을 n자리만큼 오른쪽부터 채워 exprq을 반환하는 함수
1
2
|
select LPAD('oracle!',10,'★'),RPAD('oracle!',10,'★')
from dual;
|
cs |
INSTR(str, substr, pos, occur)
- str은 str문자열에서 substr과 일치하는 글자위치를 반환
pos는 시작 위치, 디폴트 값은 1 / occur은 몇 번째 일치하는지 명시, 디폴트 값은 1
1
2
3
4
5
6
7
|
select INSTR('ALLEN','A'),
INSTR('ALLEN','A',1,1),
INSTR('ALLEN','L',1,1),
INSTR('ALLEN','L',1,2),
INSTR('ALLEN','L',2,1),
INSTR('ALLEN','L',2,2)
from dual;
|
cs |
INSTR('ALLEN','L',2,1) : 2번째 문자열 부터 L이 첫번째 나오는 위치 = 2
예>
1
2
3
4
5
6
7
8
9
10
11
12
13
|
--02)111-1234에서 지역번호 추출 => 출력결과 :
select substr('02)111-1234',1,2),
substrb('02)111-1234',1,2),
substr('02)111-1234',-11,2),
SUBSTR(RTRIM('02)111-1234','111-1234'),1,2),
LPAD('02)111-1234', 2)
from dual;
--031)111-1234에서 지역번호 추출 => 출력결과 : 031
select substr('031)111-1234',1,3)
LPAD('031)111-1234', 3),
from dual;
|
cs |
'개발 수업 > DB' 카테고리의 다른 글
[Oracle/SQL] SQL 함수(변환함수,null관련함수,기타함수),Table 생성 (0) | 2023.06.09 |
---|---|
[Oracle/SQL] SQL함수(날짜함수) (0) | 2023.06.09 |
[Oracle/SQL] 그룹쿼리와 집합연산자 (0) | 2023.06.08 |
SQL Developer 설치 (0) | 2023.06.08 |
DML 서비스 클래스 이용 (0) | 2023.06.08 |