1장 6절 함수(FUNCTION)
1. 내장함수 (BUILT-IN FUNCTION)
- 데이터베이스를 설치하면 기본적으로 제공되는 함수
- 단일행함수(Single-Row Function)
: 함수는 입력되는 값이 아무리 많아도 출력은 하나만 된다는 M:1 관계
단일행 내에 있는 하나의 값 또는 여러 값이 입력 인수로 표현될 수 있다.
가) 단일행 함수의 종류
종류 |
내용 |
함수의 예 |
문자형 함수 |
문자를 입력하면 문자나 숫자 값을 반환한다. |
LOWER, UPPER, SUBSTR/SUBSTRING, LENGTH/LEN, LTRIM, RTRIM,TRIM,ASCII |
숫자형 함수 |
숫자를 입력하면 숫자 값을 반환한다. |
ABS, MOD, ROUND, TRUNC, SIGN, CHR/CHAR, CEIL/CEILING, FLOOR, EXP, LOG, LN, POWER, SIN, COS, TAN |
날짜형 함수 |
DATE 타입의 값을 연산한다. |
SYSDATE/GETDATE, EXTRACT/DATEPART, TO_NUMBER(TO)CHAR(d,'YYYY'|'MM'|'DD')) / YEAR|MONTH|DAY |
변환형 함수 |
문자, 숫자, 날짜형 값의 데이터타입을 반환한다. |
TO_NUMBER, TO_CHAR, TO_DATE / CAST, CONVERT |
NULL 관련 함수 |
NULL을 처리하기 위한 함수 |
NVL/ISNULL, NULLIF, COALESCE |
나) 단일행 함수의 중요한 특징
- SELECT, WHERE, ORDER BY 절에서 사용 가능하다.
- 각 행(Row)들에 대해 개별적으로 작용하여 데이터 값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴한다.
- 여러 인자(Argument)를 입력해도 단 하나의 결과만 리턴한다.
- 함수의 인자(Argument)로 상수, 변수, 표현식이 사용 가능하고, 하나의 인수를 가지는 경우도 있지만 여러 개의 인수를 가질 수도 있다.
- 특별한 경우가 아니면 함수의 인자로 함수를 사용하는 함수의 중첩이 가능하다.
- 다중행함수(Multi-Row Function)
- 집계형함수 (Aggregate Function)
- 그룹함수(Group Function)
- 윈도우함수(Windows Function)
2. 문자형함수
- 문자데이터를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려주는 함수이다.
- 몇몇 문자형 함수의 경우는 결과를 숫자로 리턴하는 함수도 있다.
가. 단일행 문자형 함수의 종류
문자형 함수 |
함수 설명 |
LOWER(문자열) |
문자열의 알파벳 문자를 소문자로 바꾸어 준다. |
UPPER(문자열) |
문자열의 알파벳 분자를 대문자로 바꾸어 준다. |
ASCII(문자) |
문자나 숫자를 ASCII코드 번호로 바꾸어 준다. |
CHR/CHAR(ASCII번호) |
ASCII 코드 번호를 문자나 숫자로 바꾸어 준다. |
CONCAT (문자열1, 문자열2) |
Oracle, My SQL에서 유효한 함수이며 문자열1과 문자열2를 연결한다 합성 연산자 '||'(Oracle)나'+'(SQL Server)와 동일하다. |
SUBSTR/SUBSTRING (문자열,m[, n]) |
문자열 중 m위치에서 n개의 문자 길이에 해당하는 문자를 돌려준다. n이 생략되면 마지막 문자까지이다. |
LENGTH/LEN(문자열) |
문자열의 개수를 숫자값으로 돌려준다. |
LTRIM (문자열 [, 지정문자]) |
문자열의 첫 문자부터 확인해서 지정 문자가 나타나면 해당 문자를 제거한다. (지정 문자가 생략되면 공백 값이 디폴트) SQL Server에서는 LTRIM 함수에 지정문자를 사용할 수 없다. 즉, 공백만 제거할 수 있다. |
RTRIM (문자열 [, 지정문자]} |
문자열의 마지막 문자부터 확인해서 지정 문자가 나타나는 동안 해당 문자를 제거한다. (지정 문자가 생략되면 공백 값이 디폴트) SQL Server에서는 LTRIM 함수에 지정문자를 사용할 수 없다. 즉, 공백만 제거할 수 있다. |
TRIM ([leading | trailing|both| 지정문자 FROM 문자열) |
문자역에서 머리말, 꼬리말, 또는 양쪽에 있는 지정 문자를 제거한다. (leading | trailing | both 가 생략되면 both가 디폴트) SQL Server에서는 TRIM 함수에 지정문자를 사용할 수 없다. 즉, 공백만 제거할 수 있다. |
나. 단일행 문자형 함수 사례
문자형 함수 사용 |
결과 값 및 설명 |
LOWER('SQL Expert') |
'sql expert' |
UPPER('SQL Expert') |
'SQL EXPERT' |
ASCII('A') |
65 |
CHR(65) / CHAR(65) |
'A' |
CONCAT('RDBMS', 'SQL') 'RDBMS' || 'SQL' / 'RDBMS' + 'SQL' |
'RDBMS SQL' |
SUBSTR('SQL Expert',5,3) |
'Exp' |
|
|
|
|
|
|
3. 숫자형 함수
4. 날짜형 함수
5. 변환형 함수
6. CASE 표현
7. NULL 관련 함수