함수 QUESTION
✔ 사원 테이블에서 사원이름을 첫글자는 대문자로, 나머지는 소문자로 출력하라
SELECT INITCAP(ENAME)
FROM EMP;
: 첫 번째 문자만 대문자로 변환할 때 사용
SQL> SELECT INITCAP(ENAME)
2 FROM EMP;
INITCAP(ENAME)
--------------------
Smith
Allen
Ward
Jones
Martin
Blake
Clark
King
Turner
James
Ford
INITCAP(ENAME)
--------------------
Miller
12 rows selected.
✔ 사원테이블에서 사원이름을 뽑고 또 이름의 두번째 글자부터 네번째 글자까지 출력하라.
SELECT ENAME, SUBSTR (ENAME, 2, 4)
FROM EMP;
: 문자열을 자를때 사용 (2번째 부터 4번째)
SQL> SELECT ENAME, SUBSTR(ENAME, 2, 4)
2 FROM EMP;
ENAME SUBSTR(ENAME,2,4)
-------------------- --------------------------------
SMITH MITH
ALLEN LLEN
WARD ARD
JONES ONES
MARTIN ARTI
BLAKE LAKE
CLARK LARK
KING ING
TURNER URNE
JAMES AMES
FORD ORD
ENAME SUBSTR(ENAME,2,4)
-------------------- --------------------------------
MILLER ILLE
12 rows selected.
✔ 사원테이블의 사원 이름의 철자 개수를 출력하라.
SELECT ENAME, LENGTH (ENAME)
FROM EMP;
: 문자열의 길이를 출력할 때 사용
SQL> SELECT ENAME, LENGTH (ENAME)
2 FROM EMP;
ENAME LENGTH(ENAME)
-------------------- -------------
SMITH 5
ALLEN 5
WARD 4
JONES 5
MARTIN 6
BLAKE 5
CLARK 5
KING 4
TURNER 6
JAMES 5
FORD 4
ENAME LENGTH(ENAME)
-------------------- -------------
MILLER 6
12 rows selected.
✔ 사원테이블에서 사원이름의 앞 글자 하나와 마지막 글자 하나만 출력하되 모두 소문자로 각각 출력하라.
SELECT LOWER (SUBSTR (ENAME, 1, 1)), LOWER (SUBSTR (ENAME, -1, 1))
FROM EMP;
: 소문자로 변환할때 사용
SQL> SELECT LOWER (SUBSTR (ENAME, 1, 1)), LOWER (SUBSTR(ENAME, -1, 1))
2 FROM EMP;
LOWER(SU LOWER(SU
-------- --------
s h
a n
w d
j s
m n
b e
c k
k g
t r
j s
f d
LOWER(SU LOWER(SU
-------- --------
m r
12 rows selected.
✔ 3456.78의 소수점 첫번째 자리에서 반올림하라.
SELECT ROUND (3456.78, 1)
FROM DUAL;
: 반올림 할 때 사용 (1번째 자리에서)
SQL> SELECT ROUND(3456.78 ,1)
2 FROM DUAL;
ROUND(3456.78,1)
----------------
3456.8
✔ 3의 4제곱을 구하고, 64의 제곱근을 구하라.
SELECT POWER(3, 4), SQRT(64)
FROM DUAL;
: POWER 는 제곱을 구할 때, SQRT 는 제곱근을 구할 때 사용
SQL> SELECT POWER(3, 4), SQRT(64)
2 FROM DUAL;
POWER(3,4) SQRT(64)
---------- ----------
81 8
✔오늘날짜와 오늘날짜에서 10일을 더한 날짜를 출력하라.
SELECT SYSDATE, SYSDATE+10
FROM DUAL;
: SYSDATE (오늘날짜), +1을 하면 1일 이후 출력
SQL> SELECT SYSDATE, SYSDATE + 10
2 FROM DUAL;
SYSDATE SYSDATE+
-------- --------
21/05/23 21/06/02
✔ 현재 날짜보다 세달 후는 언제인지 를 출력하라.
SELECT SYSDATE, ADD_MONTHS (SYSDATE, 3)
FROM DUAL;
: ADD_MONTH 는 개월수 더하기
SQL> SELECT SYSDATE, ADD_MONTHS (SYSDATE, 3)
2 FROM DUAL;
SYSDATE ADD_MONT
-------- --------
21/05/23 21/08/23
✔ 사원테이블에서 사원이름과 사원들의 오늘 날짜까지의 근무일수를 구하라.
SELECT ENAME, SYSDATE - HIREDATE
FROM EMP;
: TRUNC 를 사용하면 더 보기 쉽게 구할 수 있다.
SQL> SELECT ENAME, TRUNC(SYSDATE - HIREDATE)
2 FROM EMP;
ENAME TRUNC(SYSDATE-HIREDATE)
-------------------- -----------------------
SMITH 14767
ALLEN 14702
WARD 14700
JONES 14661
MARTIN 14482
BLAKE 14632
CLARK 14593
KING 14432
TURNER 14502
JAMES 14416
FORD 14416
ENAME TRUNC(SYSDATE-HIREDATE)
-------------------- -----------------------
MILLER 14365
12 rows selected.
✔ 위 문제에서 근무일수를 00년 00개월 00일 근무하였는지 확인할 수 있도록 변환하라.
(단, 한 달을 30일로 계산하라)
ex)
| ENAME | 근무일수 |
| KING | 00년 00개월 00일 |
SELECT ENAME, (TRUNC (MONTHS_BETWEEN (SYSDATE,HIREDATE)/12))
|| '년'
|| MOD (TRUNC (MONTHS_BETWEEN (SYSDATE,HIREDATE)),12)
|| '개월'
|| TRUNC (SYSDATE - (ADD_MONTHS (HIREDATE, TRUNC (MONTHS_BETWEEN (SYSDATE, HIREDATE)))))
|| '일'
AS 근무일수
FROM EMP;
SQL> SELECT ENAME, (TRUNC (MONTHS_BETWEEN (SYSDATE,HIREDATE)/12))
2 || '년'
3 || MOD (TRUNC (MONTHS_BETWEEN (SYSDATE,HIREDATE)), 12)
4 || '개월'
5 || TRUNC (SYSDATE -(ADD_MONTHS (HIREDATE, TRUNC(MONTHS_BETWEEN (SYSDATE, HIREDATE)))))
6 || '일'
7 AS 근무일수
8 FROM EMP;
ENAME
--------------------
근무일수
--------------------------------------------------------------------------------
SMITH
40년5개월6일
ALLEN
40년3개월3일
WARD
40년3개월1일
ENAME
--------------------
근무일수
--------------------------------------------------------------------------------
JONES
40년1개월21일
MARTIN
39년7개월25일
BLAKE
40년0개월22일
ENAME
--------------------
근무일수
--------------------------------------------------------------------------------
CLARK
39년11개월14일
KING
39년6개월6일
TURNER
39년8개월15일
ENAME
--------------------
근무일수
--------------------------------------------------------------------------------
JAMES
39년5개월20일
FORD
39년5개월20일
MILLER
39년4개월0일
12 rows selected.
✔ 사원테이블에서 사원의 이름 30자 확보 한 다음 출력하고 오른쪽에 #을 채워라
SELECT ENAME, RPAD (ENAME, 30, '#')
FROM EMP;
: 지정한 길이 만큼 오른쪽부터 특정문자로 채울 때 사용
SQL> SELECT ENAME, RPAD (ENAME, 30, '#')
2 FROM EMP;
ENAME
--------------------
RPAD(ENAME,30,'#')
--------------------------------------------------------------------------------
SMITH
SMITH#########################
ALLEN
ALLEN#########################
WARD
WARD##########################
ENAME
--------------------
RPAD(ENAME,30,'#')
--------------------------------------------------------------------------------
JONES
JONES#########################
MARTIN
MARTIN########################
BLAKE
BLAKE#########################
ENAME
--------------------
RPAD(ENAME,30,'#')
--------------------------------------------------------------------------------
CLARK
CLARK#########################
KING
KING##########################
TURNER
TURNER########################
ENAME
--------------------
RPAD(ENAME,30,'#')
--------------------------------------------------------------------------------
JAMES
JAMES#########################
FORD
FORD##########################
MILLER
MILLER########################
12 rows selected.
✔ 사원테이블에서 이름의 공백을 없앤 후 출력하라
SELECT ENAME, TRIM (ENAME)
FROM EMP;
: 문자열의 시작과 끝에서 공백 문자를 제거
SQL> SELECT ENAME, TRIM (ENAME)
2 FROM EMP;
ENAME TRIM(ENAME)
-------------------- --------------------
SMITH SMITH
ALLEN ALLEN
WARD WARD
JONES JONES
MARTIN MARTIN
BLAKE BLAKE
CLARK CLARK
KING KING
TURNER TURNER
JAMES JAMES
FORD FORD
ENAME TRIM(ENAME)
-------------------- --------------------
MILLER MILLER
12 rows selected.
✔ 사원테이블에서 입사년도와 일만 출력하자.
SELECT EXTRACT (YEAR FROM HIREDATE) "HIRE YEAR",
EXTRACT (DAY FROM HIREDATE) " HIRE DAY"
FROM EMP;
: 날짜 함수에서 특정 날짜/시간 값이나 날짜 값을 가진 표현식으로부터 원하는 날짜 영역을 추출하여 출력
SQL> SELECT EXTRACT (YEAR FROM HIREDATE) "HIRE YEAR",
2 EXTRACT (DAY FROM HIREDATE) " HIRE DAY"
3 FROM EMP;
HIRE YEAR HIRE DAY
---------- ----------
1980 17
1981 20
1981 22
1981 2
1981 28
1981 1
1981 9
1981 17
1981 8
1981 3
1981 3
HIRE YEAR HIRE DAY
---------- ----------
1982 23
12 rows selected.
'|Project' 카테고리의 다른 글
PJT2_DB_cx_Oracle (0) | 2021.08.23 |
---|---|
210521_work shop (2-2) . SQL (0) | 2021.05.23 |
210517_work shop (1) . PYTHON/웹 크롤링 (0) | 2021.05.18 |
PJT1_Web_Crawling (0) | 2021.05.12 |
댓글