1.LTRIM, RTRIM

10번부서에서 이름, 직업, 월급을 출력하되, 담당업무 좌측에 S를 삭제하고, 급여 우측의 0을 삭제하라

SELECT ENAME, JOB, LTRIM(JOB,'S'), SAL, RTRIM(SAL,0) FROM EMP

WHERE DEPTNO=10;

 

2.REPLACE TRANLATE

SELECT ENAME, REPLACE(ENAME, 'SM', '*?') FROM EMP;  #완전한 글자가 있어야 치환

SELECT ENAME, TRANSLATE(ENAME, 'SC', '*?') FROM EMP;  #1대1 대응으로 치환

 

3. 숫자함수

ROUND

TRUNC

MOD(M,N): M나누기 N 나머지

ABS 절댓값

FLOOR : MAX 이상 (끝숫자를 포함) (INTEGER)

CEIL: MIN 이하

SING: 1, -1, 0

POWER(M,N) ; M의 N승

#RSE1이라고 주는건 그냥 ROUND(456.78)이 너무 길어서. 기본적으로 정수값으로 리턴

# FROM DUAL: 더미테이블

 #ROUND(N,M): M의자리까지 표시하라는 소리인가봄. 그렇다면 반올림은 M+1에서 할것

#TRUNC(456.678,2):456.67

#TRUNC(456.678,-2) : 400

4. 날짜 : 무조건 싱글쿼터.  표기방식확인

HIREDATE >= '81/09/09'

HIREDATE >= '81-09-09'

HIREDATE >= '1981/09/09'

 

century, year, month, day, hours, minutes, seconds= 7bytes

기본 date format : 'RR/MM/DD', 'DD-MON-RR'

RR= Y2K 고려해서 년도표기 (00~49: 2000년대, 50~99:1900s)

ex) 81/09/28: 1981/09/28

#1910년 표시하고 싶으면 4자리로 그대로 표시하면 됨.

 

ex) 2021년 5월 5일 오후 3시 10분 11초 : 

화면상 표시  05-may-21(DD-MM-RR)

내부저장 (7바이트): 20 21 05 05 15 10 11 (각각 century, year, month, day, hour, minute, second)

 

날짜끼리 연산가능 

date+ date : 숫자로 표시

date+ num : 날짜로 표시

date+ num/24: 시간을 더함. 다음날로 넘어감. 날짜로 표시

 

5,

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD-HH:MI:SS') FROM DUAL;

#TO_CHAR: 문자로 변환

 

systimestamp: 타임스탬프 with 타임존 형식의 시스템 날짜 리턴

current_date: 현재 세션의 날짜정보를 일/월/년도 24시 :분:초 리턴

current_timestamp: 타임스탬프 윗 타임존 형식으로 current_date 세션타임존 형식으로 리턴

 

extract: datetime 혹은 interval의 값 표현형식에 지정된 datetime 필드의 값을 추출해서 리턴

ex) 오늘날짜에서 년도만 출력하기

 

SELECT EXTRACT (YEAR FROM SYSDATE) FROM DUAL;

SELECT ENAME, EXTRACT (MONTH FROM HIREDATE) FROM EMP;

MONTH_BETWEEN(D1,D2): 날짜 경과를 개월수로 리턴

ADD_MONTH(D1, NUM): D1날짜에 N개월 더샇

NEXT_DAY(D1, 'CHAR'): D1날짜보다 이후이며 'CHAR'에 지정한 요일에 해당하는 날짜

LAST_DAY: 해당월의 마지막 날짜

 

6. 사원테이블에서 현재까지 근무일수가 몇주, 몇일인지 조회한다. 

SELECT ENAME, HIREDATE, SYSDATE, (SYSDATE-HIREDATE) TOTALDAYS,

TRUNC( (SYSDATE-HIREDATE)/7) WEEKS,

ROUND( MOD( (SYSDATE-HIREDATE), 7) ) DAYS FROM EMP

ORDER BY 4 DESC; 

7. 사원 테이블에서 10번부서 사원의 입사일로부터 5개월 지난날짜 계산하여 출력

SELECT HIREDATE, ADD_MONTHS(HIREDATE, 5) FROM EMP WHERE DEPTNO=10;

 

8,  사원테이블에서 10번부서 사원의 입사일로부터 돌아오는 금요일 계산

SELECT ENAME, HIREDATE, NEXT_DAY(HIREDATE, 6) FROM EMP

WHERE DEPTNO=10;

# 일요일이 1, 금요일은 6

 

 

"시험에 자주 나오는 분석함수"

ANALYTIC

 

AVG

CORR

COUNT

COVAR_POP

COVAR_SAMP

FIRST_VALUE

LAST_VALUE

MAX

MIN

NTH_VALUE

PERCET_RANK

RANK

RATIO TO REPORT

 

 

NCD>>

     -> TO_CHAR   

NUMBER      CHARACTER 

    <- TO_NUMBER

 

     ->TO_CHAR

DATE           CHARACTER

      <- TO_DATE

 

 

9.T0_CHAR

숫자 FORMAT :

숫자(9,0), 그룹 구분자(,), G, 소수점, 통화$ L, 공백제거 FM

표기법 EEEE(지수), RN(로마표기자), rn, X(16진수)

기호표시 MI: 숫자가 음수인경우 마지막에 -

            PR: 음수인경우 <> 안에 숫자표시

             S: 음수인경우 숫자앞에 -

 

                    

SELECT TO_CHAR(12.3, '009.90') FROM DUAL;

=> 012.30

 

SELECT TO_CHAR(12345, '099,999.9') AS RES FROM DUAL;

=>012,345.0

 

SELECT TO_CHAR(12345, 'L099,999.9') AS RES FROM DUAL;

-> \012,345.0

 

SELECT TO_CHAR(12345, 'FM999,999.9') AS RES FROM DUAL;

12,345.

 

SELECT TO_CHAR(12345, '9.9EEEE') AS RES FROM DUAL;

1.2E+04

 

SELECT TO_CHAR(-123, '999MI') AS RES FROM DUAL;

123-

 

SELECT TO_CHAR(-123, '999PR') AS RES FROM DUAL;

<123>

 

SELECT TO_CHAR(-123, 'S999') AS RES FROM DUAL;

-123

 

 

10. 날짜 FORMAT

 

'SQL-오라클' 카테고리의 다른 글

SQL-cmd 5  (0) 2021.05.26
SQL-cmd 4  (0) 2021.05.26
sql 예제  (0) 2021.05.24
sql 자료  (0) 2021.05.24
SQL-cmd 2  (0) 2021.05.21

+ Recent posts