SQLP

[SQLP] SQL함수 - 단일행 함수

뜽배 2022. 7. 27. 11:08
728x90
반응형

SQL함수에는 단일행 함수와 복수행 함수 두가지가 있다.

 

단일행 함수는 데이터값을 조작하는데 주로 사용되며, 행별로 함수를 적용하여 하나의 결과를 반환하는 함수이다.

또한 단일행 함수는 SQL명령문의 SELECT, WHERE, ORDER BY 절에서 사용할 수 있으며, 중첩하여 사용할 수 있다.

 

단일행 함수에는 

- 문자 함수

- 숫자 함수

- 날짜 함수

- 변환 함수

-- 묵시적 데이터 타입변환

-- 명시적 데이터 타입 변환

- 일반 함수

 

이렇게 구분할 수 있다.

 

1. 문자 함수

INITCAP : 문자열의 첫 번째 문자만 대문자로 변환 : INITCAP('student') -> Student

LOWER : 문자열 전체를 소문자로 변환

UPPER : 문자열 전체를 대문자로 변환

 

LENGTH :  문자열의 길이를 반환 :  LENGTH('홍길동') -> 3

LENGTHB : 문자열의 바이트 수를 반환 : LENGTHB('홍길동') -> 6

 

CONCAT : 두 문자열을 결합 , '||' 와 동일 : CONCAT('TE', 'ST') -> 'TEST'

SUBSTR : 특정 문자 또는 문자열 일부를 추출 : SUBSTR('TEST', 2,2) -> 'ES'  : 문자열의 N번째 인덱스부터 M개 짜르기

INSTR : 특정 문자가 출현하는 첫 번째 위치를 반환 : INSTR('TEST', 'ES') ->  2

LPAD : 오른쪽 정렬 후 왼쪽에 지정문자를 삽입 : LPAD('TEST',6,'*') -> '**TEST'

RPAD : 왼쪽 정렬 후 오른쪽에 지정문자를 삽입 : RPAD('TEST',6,'*') -> 'TEST**'

LTRIM : 왼쪽의 지정문자를 삭제 : LTRIM('**TEST', '*') -> 'TEST'

RTRIM : 오른쪽의 지정문자를 삭제 : RTIM('TEST**', '*') -> 'TEST'

 

2. 숫자함수

ROUND : 지정한 자리 이하에서 반올림 : ROUND(123.178, 1) -> 123.2

TRUNC : 지정한 자리 이하에서 절삭 : TRUNC(123.178, 1) -> 123.1

MOD : m을 n으로 나눈 나머지 : MOD(12,10) -> 2

CEIL :  지정한 값보다 큰 수 중에서 가장 작은 정수 : CEIL(123.17) -> 124

FLOOR : 지정한 값보다 작은 수 중에서 가장 큰 정수 : FOOLR(123.178) -> 123

 

3. 날짜함수

SYSDATE : 시스템의 현재 날짜 : '2022/07/27'

MONTHS_BETWEEN : 날짜와 날짜사이의 개월을 계산 : MONTHS_BETWEEN( '2023/01/01', '2022/01/01') -> 12

ADD_MONTHS : 날짜에 개월을 더한 날짜 계산 : ADD_MONTHS('2022/07/27',3) -> '2022/10/27'

NEXT_DAY : 날짜후의 첫 요일의 날짜를 계산 : NEXT_DAY('2022/07/27', '일') -> '2022/07/31'  :: 1 일 / 2 월 .... 7 토 로 매핑됨

LAST_DAY : 월의 마지막 날짜를 계산 : LAST_DAY('2022/08/01') -> '2022/08/31'

ROUND : 날짜를 반올림 :  TO_CHAR(ROUND(SYSDATE) ,'YYYY/MM/DD HH24:MI:SS') -> 2022/07/27 00:00:00 오전이면 날짜내림, 오후면 날짜 올림

TRUNC : 날짜를 절삭 : TO_CHAR(TRUNC(SYSDATE), 'YYYY/MM/DD HH24:MI:SS') -> 2022/07/27 00:00:00 무조건 시간 초기화

 

4. 묵시적 데이터 타입 변환

정확한 연산을 위해 데이터타입을 내부적으로 변환하는 경우이다.

예를들어 WHERE A=B 에서 비교되는 데이터 타입이 다른 경우 A와 B를 동일한 데이터 타입으로 비교하기 위해서 A,B중 하나의 데이터타입을 내부적으로 변환한다.

 

NUMBER = VARCHAR2 / CHAR -> VARCHAR나 CHAR가 NUMBER로 변환

VARCHAR2 / CHAR = NUMBER -> VARCHAR2나 CHAR 가 NUMBER로 변환

 

5. 명시적인 데이터 타입 변환

TO_CHAR : 숫자/날짜 타입을 문자로 변환 : TO_CHAR('22/07' , 'YYYY-MM') -> '2022-07'

TO_NUMBER : 문자열을 숫자 타입으로 변환 : TO_NUMBER('1000') -> 1000 

TO_DATE : 문자열을 날짜 타입으로 변환 : TO_DATE('20220701') -> '2022/07/01'

 

6. 일반함수

NVL : NULL값 변환 함수 : NVL( 'NULL값을 포함하는 컬럼 또는 표현식', NULL을 대체하는 값) : NVL(SAL, 0)

NVL2 : NVL2('NULL을 포함하는 컬럼 또는 표현식', 'NULL이 아닐때 반환하는 값', NULL일때 대체되는 값)  : NVL2(SAL, SAL, 0)

NULLIF : 두개의 표현식을 비교하여 값이 동일하면  NULL을 반환하고, 동일하지 않으면 첫번째 표현식값을 반환 : NULLIF( LENGTHB(NAME), LENGTH(NAME))

COALESCE : 인수중에서 NULL이 아닌 첫 번째 인수를 반환하는 함수이다. N개의 인수중에서 첫 번째 인수 값이 NULL이면 두 번째 값을 출력하고 , 두 번째 인수값이 NULL이면 세번 째 인수 값을 출력한다. : COALESCE(SAL, COMM, 0)

DECODE : 표현식과 찾고자 하는 값이 일치하면 RESULT값 반환 없는 경우에는 기본값 반환 DECODE(DEPT_NO , '101', '컴퓨터공학', '102', '전자공학', '학과없음')

-> DEPT_NO가 101이면 컴퓨터공학, 102이면 전자공학, 일치하지 않으면 학과없음 이라고 출력하는 것이다.

CASE : CASE함수는 DECODE함수의 기능을 확장한 함수이다. \

사용법 : CASE expression WHEN comparison_exp1 THEN return_exp1

                                          [WHEN comparison_exp2 THEN return_exp2

                                          WHEN comparison_exp3 THEN return_exp3

                                           ELSE else_expression]

               END

이렇게 사용하며

CASE WHEN dept_no='101' THEN sal*0.1

          WHEN dept_no='102' THEN sal*0.2

          WHEN dept_no='103' THEN sal*0.3

          ELSE 0

END bonus

위와 같이 예시를 들 수 있다.

 

728x90
반응형

'SQLP' 카테고리의 다른 글

[SQLP] SQL함수 - 복수행 함수  (0) 2022.07.27