쯔이's Dev

FUNCTION(2) - 단일행 함수(숫자 처리 함수) 본문

SQL/함수

FUNCTION(2) - 단일행 함수(숫자 처리 함수)

jjhim531 2024. 8. 12. 19:44
반응형

<< 숫자 처리 함수 >>
   

< ABS >

숫자의 절대값을 구해주는 함수.

여러 숫자들의 각 절대값을 원한다면 각각 ABS( )를 해줘야한다.

[표현법]

ABS(NUMBER)

 

< MOD >

두 수를 나눈 나머지값을 반환

[표현법]

MOD(NUMBER,NUMBER) 

* NUMBER 는 꼭 정수가 아니어도 된다. 소수점도 가능하다.

SELECT
    mod(10.9, 3)
FROM
    dual;

 < ROUND > 

반올림한 결과를 반환

[표현법]

ROUND(NUMBER, [위치])

* 기본값으로 소수점 첫번째 자리에서 반올림된다.(위치생략 가능)

SELECT
    round(123.456)
FROM
    dual;

 

SELECT
    round(123.456, 1)
FROM
    dual;

 

SELECT
    round(123.456, - 1)
FROM
    dual;

 < CEIL > 

올림처리를 위한 함수

[표현법]

CEIL(NUMBER)

* 소수점 첫번째 자리에서 올림된다.

SELECT
    ceil(123.456)
FROM
    dual

 < TRUNC >, < FLOOR >

버림처리함수

[표현법]

TRUNC(NUMBER, [위치])

FLOOR(NUMBER)

SELECT
    trunc(123.952)
FROM
    dual;

SELECT
    trunc(123.952, 1)
FROM
    dual;

SELECT
    trunc(123.952, - 1)
FROM
    dual;

 << 날짜 처리 함수 >>

 < SYSDATE > 

시스템의 현재 날짜 및 시간을 반환

* DATE - DATE를 하게 되면 초까지 계산되어 소수점이 나오게된다. 버림처리를 해줘서 일 수를 구한다.

 < MONTHS_BETWEEN > 

두 날짜 사이의 개월 수

[표현법]

months_between(날짜1, 날짜2)

* 보통 소수점이 나오게 되기 때문에 CEIL로 올림처리를 해준다.

 < ADD_MONTHS > 

특정 날짜에 NUMBER개월수를 더해서 반환

[표현법]

add_months( 특정날짜, NUMBER )

SELECT
    emp_name,
    hire_date,
    FLOOR(sysdate - hire_date),
    ceil(months_between(sysdate, hire_date))
FROM
    employee;

 < NEXT_DAY > 

특정날짜 이후 가장 가까운 요일의 날짜를 반환

[표현법]

NEXT_DAY( 특정날짜,  요일( '문자' | 숫자 ))

* 일~토 = 1~7

* 요일 : 문자로 적을 경우 2가지 모두 가능하다     EX) 토요일(O), 토(O)

* 언어변경을 해주지 않은 상태로 SATURDAY라고 쓰면 에러가 난다. 그러므로 영어로 바꿔주고 SATURDAY라고 해줘야한다. 다시 한글로 적고 싶으면 다시 또 한국어로 언어변경을 해줘야한다.

SELECT
    next_day(sysdate, 'SATURDAY')
FROM
    dual;

 

 

<< 언어변경 >>

ALTER SESSION SET nls_language = korean;

ALTER SESSION SET nls_language = american;

 

 < LAST_DAY> 

해당월의 마지막 날짜 구해서 반환

[표현법]

LAST_DAY(특정날짜)

SELECT
    last_day(sysdate)
FROM
    dual;

 

 < EXTRACT > 

특정 날짜로부터 년 | 월 | 일 값을 추출해서 반환하는 함수

[표현법]

* EXTRACT(YEAR FROM 특정날짜) : 연도만 추출

 

* EXTRACT(MONTH FROM 특정날짜 ) : 월만 추출

 

* EXTRACT(DAY FROM 특정날짜 ) : 일만 추출

 

728x90
반응형