SQL 함수

예림·2023년 9월 13일
0

함수

  • 단일행 함수 : 여러건의 데이터를 한번에 하나씩만 처리하는 함수 입니다
    여러행 함수 : 여러건의 데이터를 입력받아서 결과값 한건을 만들어주는 함수 입니다

DUAL 테이블

-- 한행으로 결과를 출력하기 위한 테이블 입니다
-- 결과를 한줄로 얻기 위해서 오라클에서 제공하는 테이블 입니다
-- DUAL 테이블은 DUMMY 라는 하나의 컬럼으로 구성되어 있습니다
-- DUAL 테이블은 DUMMY 라는 하나의 컬럼에 X 라는 하나의 로우만을 저장하고 있지만 의미없는 값 입니다

1. 숫자 함수

ABS
: 절대값을 구하는 함수 입니다

SELECT -10, ABS(-10)
FROM DUAL;

FLOOR
: 소수점 아래를 버리는 함수 입니다

SELECT 12.1234, FLOOR(12.1234)
FROM DUAL;

ROUND
: 반올림하는 함수 입니다

SELECT 34.5678, ROUND(34.5678, 2)
FROM DUAL;

TRUNC
: 지정한 자리수 이하를 버린 결과 입니다

SELECT TRUNC(34.5678, 2), TRUNC(34.5678)
FROM DUAL;

MOD
: 나눗셈 연산을 한 후에 나온 나머지를 구하는 함수 입니다

SELECT MOD(10, 3), MOD(10, 4)
FROM DUAL;

2. 문자 함수

UPPER
: 대문자로 변환하는 함수 입니다

SELECT 'Hello Oracle', UPPER('Hello Oracle')
FROM DUAL;

LOWER
: 소문자로 변환하는 함수 입니다

SELECT 'Hello Oracle', LOWER('Hello Oracle')
FROM DUAL;

INITCAP
: 문자열의 이니셜만 대문자로 변경 합니다

SELECT 'hello oracle', INITCAP('hello oracle')
FROM DUAL;

LENGTH
: 컬럼에 저장된 데이터의 값이 몇개의 문자로 되어 있는지 계산합니다

SELECT LENGTH('ORACLE'), LENGTH('오라클')
FROM DUAL;

LENGTHB
: 문자열의 길이를 byte 단위로 처리 합니다

SELECT LENGTHB('ORACLE'), LENGTHB('오라클')
FROM DUAL;

SUBSTR
: 문자열의 시작 위치부터 선택 갯수만큼의 문자를 추출합니다
: SUBSTR( 대상, 시작위치, 추출할 갯수 )
-- 오라클에서 index 는 1 부터 시작
SELECT SUBSTR('oracle string test', 8, 6)
FROM DUAL;-- 시작 위치 인자값에 음수를 적용할 수 있는데, 이때는 문자열의 뒤에서부터 시작 위치가 적용 됩니다
SELECT SUBSTR('oracle string test', -4, 4)
FROM DUAL;

INSTR
: 특정 문자가 있는 위치를 알려줍니다
: INSTR( 대상, 검색글자, 시작위치, 몇번째 검색 )

SELECT INSTR('step by step','t',2,2)
FROM DUAL;

SELECT INSTR('데이터베이스','이',3)
FROM DUAL;

LPAD
: 대상 문자열을 명시된 자릿수에서 오른쪽에 표시하고, 남은 왼쪽 자리들은 기호로 채웁니다
-- : LPAD( 대상, 자릿수, 기호 )

SELECT LPAD('padding',10,'#')
FROM DUAL;

LTRIM
: 문자열의 왼쪽(앞)의 공백 문자를 제거합니다

SELECT LTRIM(' trim test ')
FROM DUAL;

RTRIM
: 문자열의 오른쪽(뒤)의 공백 문자를 제거합니다

SELECT RTRIM(' trim test ')
FROM DUAL;

3. 날짜 함수

SYSDATE
: 시스템의 현재 날짜

SELECT SYSDATE
FROM DUAL;

-- 날짜 연산
-- 날짜 + 숫자 : 해당 날짜부터 그 기간만큼 지난 날짜를 계산
-- 날짜 - 숫자 : 해당 날짜부터 그 기간만큼 이전 날짜를 계산
-- 날짜 - 날짜 : 두 날짜 사이의 기간을 계산
SELECT SYSDATE-1 어제, SYSDATE 오늘, SYSDATE+2 모레
FROM DUAL;

ROUND
:ROUND( date, 포멧모델 )
-- 포맷 모델 날짜를 사용해서, 날짜를 반올림
-- :포맷 모델 단위
-- DDD 일몰 기준
-- HH 시간 기주
-- MONTH 월몰 기준( 16일 기준 )

TRUNC
: 날짜 함수도 잘라낼 수 있음

MONTHS_BETWEEN
: 날짜와 날짜 사이의 개월 수
:MONTHS_BETWEEN( date_1, date_2 )

-직원들의 근무 개월수
SELECT ename, sysdate, hiredate, TRUNC(MONTHS_BETWEEN(sysdate, hiredate))
FROM EMP;

ADD MONTHS
: 특정 개월 수 더한 날짜
:ADD_MONTHS( date, number )

NEXT_DAY
: 날짜를 기준으로 최초로 돌아오는 요일에 해당하는 날짜를 반환
: NEXT_DAY( date, 요일 )

LAST_DAY
: 해당 날짜가 속한 달의 마지막 날짜를 반환

4. 형변환 함수

  • 숫자, 문자, 날짜의 데이터 아입을 다른 데이터 타입으로 변환 합니다
  • TO_CHAR : 날짜 또는 숫자 타입을 문자형으로 변환
    TO_DATE : 문자 타입을 날짜 타입으로 변환
    TO_NUMBER : 문자 타입을 숫자 타입으로 변환

TO_CHAR
: 날짜 - >TO_CHAR( 날짜데이터, '출력형식' )

-- 현재 날짜와 시간 출력
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD AM HH24:MI:SS') "현재시간"
FROM DUAL;

:숫자 - >TO_CHAR( 날짜데이터, '출력형식' )

profile
커피 잘 마시는 사람

0개의 댓글

관련 채용 정보