dongdorodongdong
함수 본문
내장함수
- 특징
- 데이터 값을 간편하게 조작
- 함수의 입력 값에 따라 단일행 함수, 다중행 함수로 나뉜다.
- 입력 값에 상관없이 출력은 하나만 된다. (M:1) - 종류
- 문자형
- 숫자형
- 날짜형
- 변환형
- NULL 관련
DUAL 테이블
- 정의
- Data Dictionary와 함께 Oracle에 의해 자동으로 생성되는 테이블
- 사용자 SYS의 스키마에 있음 (그래도 모든 사용자가 엑세스 가능)
- SELECT ~ FROM ~ 의 형식을 갖추기 위한 일종의 DUMMY 테이블 (계산, 사용자 함수 등을 실행하고자 할 경우 유용)
- 'X'라는 값을 1건 포함
※ Oracle함수 / SQL Server함수
문자형 함수
- LOWER(문자열)
- 알파벳 문자를 소문자로 바꾸어 준다. - UPPER(문자열)
- 알파벳 문자를 대문자로 바꾸어 준다. - CHR(ASCII번호) / CHAR(ASCII번호)
- ASCII 코드 번호를 문자나 숫자로 바꾸어 준다. - CONCAT(문자열1, 문자열2)
- 문자열1과 문자열2를 연결한다. - SUBSTR(문자열, m, n), SUBSTRING(문자열, m, n)
- 문자열 중 m위치에서 n개의 문자 길이에 해당하는 문자를 반환
- n 생략시 마지막 문자까지 - LENGTH(문자열) / LEN(문자열)
- 문자열의 갯수를 반환 - LTRIM(문자열, 지정문자) / LTRIM(문자열)
- 첫 문자부터 확인해서 지정 문자가 나타나면 해당 문자를 제거
- 지정 문자가 생략되면 공백 값으로
- SQL Server는 지정문자X - RTRIM(문자열, 지정문자) / RTRIM(문자열)
- 마지막 문자부터 확인해서 지정 문자가 나타나면 해당 문자를 제거
- 지정 문자가 생략되면 공백 값으로
- SQL Server는 지정문자X - TRIM(지정문자 FROM 문자열)
- 양쪽에 있는 지정문자를 제거
- SQL Server는 지정문자X
숫자형 함수
- ABS(숫자)
- 숫자의 절대값을 반환
- SIGN(숫자)
- 양수, 음수, 0을 판별한다.
- MOD(숫자1, 숫자2)
- 숫자1을 숫자2로 나눈 나머지 값을 반환 - CEIL(숫자) / CEILING(숫자)
- 숫자보다 크거나 같은 최소 정수 반환 - FLOOR(숫자)
- 숫자보다 작거나 같은 최대 정수 반환 - ROUND(숫자, m)
- 숫자를 소수점 m자리에서 반올림
- m이 생략이되면 0의자리에서 반올림 - TRUNC(숫자, m)
- 숫자를 소수m자리에서 잘라 버림
- m이 생략이되면 0의자리에서 잘라버림
- SQL Server에서 TRUNC 함수 제공X - SIN ,COS, TAN, ...
- 삼각함수 값 반환 - EXP(), POWER(), SQRT(), LOG(), LN()
- 숫자의 지수, 제곱, 제곱근, 로그값, 자연 로그값을 반환
날짜형 함수
- SYSDATE() / GETDATE
- 현재 날짜와 시각 출력 - EXTRACT('YEAR' | 'MONTH' | 'DAY' from d) / DATEPART('YEAR' | 'MONTH' | 'DAY', d)
- 날짜 데이터에서 년/월/일 데이터를 출력
- 시간/분/초 데이터도 가능 - TO_NUMBER(TO_CHAR(d, 'YYYY')) / YEAR(d)
- 날짜 데이터에서 년/월/일 데이터를 출력
변환형 함수
- 종류
- 명시적 변환 : 데이터 변환형 함수로 데이터 유형을 변환하도록 명시해 주는 경우
- 암시적 변환 : 데이터베이스가 자동으로 유형을 변환하여 계산하는 경우 - TO_NUMBER(문자열)
- 문자열을 숫자로 변환
- Oracle - TO_CHAR(숫자 | 날짜, FORMAT)
- 숫자나 날짜를 주어진 FORMAT 형태로 문자열로 반환
- Oracle - TO_DATE(문자열, FORMAT)
- 문자열을 주어진 FORMAT 형태로 날짜로 반환
- Oracle - CAST(expressing AS data_type)
- expressing을 목표 데이터 유형으로 변환
- SQL Server - CONVERT(data_type, expressing)
- expressing을 목표 데이터 유형으로 변환
- SQL Server
CASE 표현
- 정의
- IF-THEN-ELSE 논리와 유사한 방식으로 SQL의 비교 연산 기능을 보완
- Oracle의 경우 DECODE 함수 사용 가능 - CASE 조건 THEN 수행1 ELSE 수행2 END
- 조건이 맞으면 수행1, 조건이 맞지 않으면 수행2를 수행 - DECODE(표현식, 기준값1, 값1, 기준값2, 값2..., 디폴트값)
- 표현식의 값이 기준값1이면 값1을 출력 기분값2이면 값2를 출력
- 어떤 기준값에도 해당되지 않으면 디폴트값 출력
NULL 관련
- 특징
- 아직 정의되지 않은 값으로 0 또는 공백이 아니다.
- NULL 값을 포함하는 연산의 경우 결과 값은 NULL이다. - NVL(표현식1, 표현식2) / ISNULL(표현식1, 표현식2)
- 표현식1의 값이 NULL이면 표현식2의 값 반환
- 표현식1의 값이 NULL이 아니면 표현식1의 값 그대로 반환
- 표현식과 결과 데이터 타입이 같아야 함 - NULLIF(표현식1, 표현식2)
- 표현식1과 표현식2가 같으면 NULL
- 표현식1과 표현식2가 같지 않으면 표현식1 - COALESCE(표현식1, 표현식2, ....)
- 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 반환
- 모든 표현식이 NULL이면 NULL 반환