Database/개념

[DATABASE] 함수란? 문자형, 숫자형, 날짜형, 변환형, NULL 함수란?

꽁담 2018. 11. 2. 00:46

함수란?



벤더에서 제공하는 함수인 내장함수와 사용자가 정의할 수 있는 함수로 나뉩니다.

여기에서는 기본적으로 제공되는 SQL 내장 함수에 대해 설명합니다.



내장함수



단일행 값이 입력되는 단일행 함수와 여러 행의 값이 입력되는 다중행 함수로 나뉩니다.

다중행 함수는 다시 집계 함수, 그룹 함수, 윈도우 함수로 나뉩니다.



단일행 함수



단일행 함수의 종류는 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수가 있습니다.


문자형 함수


문자형 함수는 문자 데이터를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려주는 함수입니다.

 문자형 함수

 함수 설명

 LOWER(문자열)

 문자열의 알파벳 문자를 소문자로 바꾸어 준다.

 UPPER(문자열)

 문자열의 알파벳 문자를 대문자로 바꾸어 준다.

 ASCII(문자)

 문자나 숫자를 ASCII 코드 번호로 바꾸어 준다.

 CHR/CHAR(ASCII번호)

 ASCII 코드 번호를 문자나 숫자로 바꾸어 준다.

 CONCAT(문자열1, 문자열2)

 Oracle, MySQL, Goldilocks 에서 유효한 함수이며 문자열1과 문자열2를 연결한다.

 '||' 나 '+' 와 동일하다.

 SUBSTR/SUBSTRING(문자열, m[, n])

 문자열 중 m위치에서 n개의 문자 길이에 해당하는 문자를 돌려준다.

 n 이 생략되면 마지막 문자까지이다.

 LENGTH/LEN(문자열)

 문자열의 개수를 숫자값으로 돌려준다.

 LTRIM(문자열 [, 지정문자])

 문자열의 첫 문자부터 확인해서 지정 문자가 나타나면 해당 문자를 제거한다.

 지정문자가 생략되면 공백 값이 기본이다.

 RTRIM(문자열 [, 지정문자]) 문자열의 마지막 문자부터 확인해서 지정 문자가 나타나면 해당 문자를 제거한다.
 지정문자가 생략되면 공백 값이 기본이다.

 TRIM([leading | trailing | both] 지정문자 FROM 문자열)

 문자열에서 머리말, 꼬리말, 또는 양쪽에 있는 지정 문자를 제거한다.
 leading | trailing | both 가 생략되면 both 가 기본이다.


숫자형 함수


숫자형 함수는 숫자 데이터를 입력받아 처리하고 숫자를 리턴하는 함수입니다.

 숫자형 함수

 함수 설명

 ABS(숫자)

 숫자의 절대값을 돌려준다.

 SIGN(숫자)

 숫자가 양수인지, 음수인지 0인지를 구별한다.

 MOD(숫자1, 숫자2)

 숫자1을 숫자2로 나누어 나머지 값을 리턴한다.

 CEIL/CEILING(숫자)

 숫자보다 크거나 같은 최소 정수를 리턴한다.

 FLOOR(숫자)

 숫자보다 작거나 같은 최대 정수를 리턴한다.

 ROUND(숫자 [, m])

 숫자를 소수점 m + 1 자리에서 반올림하여 리턴한다.

 m 이 생략되면 0 이 기본이다.

 TRUNC(숫자 [, m])

 숫자를 소수 m + 1 자리에서 잘라서 버린다.

 m 이 생략되면 0 이 기본이다.

 SIN, COS, TAN .. 숫자의 삼각함수 값을 리턴한다.
 EXP(), POWER(), SQRT(), LOG(), LN() 숫자의 지수, 거듭 제곱, 제곱 근, 자연 로그 값을 리턴한다.


날짜형 함수


날짜형 함수는 DATE 타입의 값은 연산하는 함수입니다.

 날짜형 함수

 함수 설명

 SYSDATE/GETDATE()

 현재 날짜와 시각을 출력한다.

 EXTRACT('YEAR'|'MONTH'|'DAY' from d)/DATEPART('YEAR'|'MONTH'|'DAY', d)

 날짜 데이터에서 년/월/일 데이터를 출력할 수 있다.

 시간/분/초도 가능하다.

 TO_NUMBER(TO_CHAR(d, 'YYYY'))/YEAR(d),

 TO_NUMBER(TO_CHAR(d, 'MM'))/MONTH(d),

 TO_NUMBER(TO_CHAR(d, 'DD'))/DAY(d)

 날짜 데이터에서 년/월/일 데이터를 출력할 수 있다.

 TO_NUMBER 제외 시 문자형으로 출력된다.


변환형 함수


특정 데이터 타입을 다양한 형식으로 출력하고 싶은 경우에 사용되는 함수입니다.

변환형 함수는 두 가지 방식이 있습니다.

1. 명시적 데이터 유형 변환 : 데이터 변환형 함수로 데이터 유형을 변환하도록 명시해 주는 경우

2. 암시적 데이터 유형 변환 : 데이터베이스가 자동으로 데이터 유형을 변환하여 계산하는 경우


ORACLE 의 변환형 함수

 변환형 함수

 함수 설명

 TO_NUMBER(문자열)

 숫자로 된 문자열을 숫자로 변환한다.

 TO_CHAR(숫자 | 날짜 [, FORMAT])

 숫자나 날짜를 주어진 포맷 형태로 문자열 타입으로 변환한다.

 TO_DATE(문자열 [, FORMAT])

 문자열을 주어진 포맷 형태로 날짜 타입으로 변환한다.


MSSQL 의 변환형 함수

 변환형 함수

 함수 설명

 CAST (expression AS data_type [(length])

 expression 을 목표 데이터 유형으로 변환한다.

 CONVERT (data_type [(length)], expression [, style])

 expression 을 목표 데이터 유형으로 변환한다.


CASE 표현


CASE 표현은 IF-THEN-ELSE 논리와 유사한 방식으로 표현식을 작성해서 SQL 의 비교 연산 기능을 보완하는 역할을 합니다.

 CASE 표현

 함수 설명

 CASE

    SIMPLE_CASE_EXPRESSION 조건

    ELSE 표현절

 END

 SIMPLE_CASE_EXPRESSION 조건이 맞으면 조건내의 THEN 절을 수행하고, 조건이 맞지 않으면 ELSE 절을 수행한다.

 CASE

    SEARCHED_CASE_EXPRESSION 조건

    ELSE 표현절

 END

 SEARCHED_CASE_EXPRESSION 조건이 맞으면 조건내의 THEN 절을 수행하고, 조건이 맞지 ㅇ낳으면 ELSE 절을 수행한다.

 DECODE(표현식, 기준값1, 값1 [, 기준값2, 값2, ..., 디폴트값)

 ORACLE 과 GOLDILOCKS 에서만 사용되는 함수로, 표현식의 값이 기준값1이면 값1을 출력하고, 기준값2이면 값2를 출력한다.

 만족하는 기준값이 없으면 디폴트 값을 출력한다.


NULL 관련 함수


NULL 에 대한 특성을 다시한번 정리합니다.

1. 널 값은 아직 정의되지 않은 값으로 0 또는 공백과는 다르다.

2. 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY 로 정의되지 않은 모든 데이터 유형을 널 값을 포함할 수 있다.

3. 널 값을 포함하는 연산의 경우 결과 값도 널 값이다.

4. 결과값을 널이 아닌 다른 값을 얻고자 할 때 NVL/ISNULL 함수를 사용한다.


 NULL 관련 함수

 함수 설명

 NVL(표현식 1, 표현식2)/ISNULL(표현식1, 표현식2)

 표현식1의 결과값이 NULL 이면 표현식2의 값을 출력한다.

 NULLIF(표현식1, 표현식2)

 표현식1이 표현식2와 같으면 NULL 을, 같지 않으면 표현식1을 리턴한다.

 COALESCE(표현식1, 표현식2, ...)

 임의의 개수 표현식에서 NULL 이 아닌 최초의 표현식을 나타낸다.

 모든 표현식이 NULL 이면 NULL 을 리턴한다.




이 내용은 'SQL 전문가 가이드, 한국데이터베이스 진흥원' 에서 공부한 내용입니다.