[학습 DAY - 4]
SQL에서의 날짜
-. 시스템 날짜 (시계 내장)
- SELECT CURRENT_TIMESTAMP;
날짜의 덧셈과 뺄셈
-. 날짜시간형 데이터는 기간형 수치데이터와 덧셈 및 뺄셈 가능 (a + 1 DAY 또는 a - 1 DAY)
- SELECT CURRENT_DATE + INTERVAL 1 DAY;
-. 날짜형 간의 뺄셈
- SELECT DATEDIFF('2021-10-24', '2021-01-01');
CASE 문
-. RDBMS에서는 사용자가 함수 작성 가능
-. 임의에 따라 독자적으로 변환 처리를 지정해 데이터를 변환하고자 할 경우 CASE문 사용
-. WHEN 절에서는 참/거짓을 반환하는 조건식 기술
-. TEHN 절에서는 기술한 식 처리
-. WHEN 조건식을 차례로 평가하다가 가장 먼저 조건을 만족한 WHEN절의 THEN 식 결과를 반환
-. 모두 만족 못할 경우 ELSE 절에 기술한 식이 채택(생략할 경우 NULL로 간주)
- CASE 문
-. CASE WHEN 조건식1 THEN 식1
-. [WHEN 조건식2 THEN 식2...]
-. [ELSE 식3]
-. END
COALESCE
-. NULL 값을 반환하는 경우 COALESCE 함수를 사용이 더 편함
-. SELECT a, COALESCE(a, 0) FROM sample37;
-. 여러 개의 인수 지정 가능(NULL이 아닌 값에 대해서는 가장 먼저 지정된 인수 값 반환)
-. a가 NULL이 아니면 a 출력, NULL이면 0 출력
또 하나의 CASE 문
-. 숫자로 이루어진 코드를 알아보기 쉽게 문자열로 변환하는 경우 CASE문 많이 사용
- WHEN a = 1 THEN '남자'
WHEN a = 2 THEN '여자'
CASE를 사용할 경우 주의사항
-. ELSE를 생략하면 NULL이 됨
-. 대응하는 WHEN이 하나도 없으면 ELSE 절이 사용되는데 이때 생략하면 NULL 반환
-. CASE 문의 ELSE는 생략하지 않는 편이 낫다
WHEN에 NULL 지정하기
-. NULL 값 판정은 IS NULL 사용
-. 검색 CASE 문으로 NULL 값 판정
- SELECT a, CASE WHEN a = 1 THEN '남자' WHEN a = 2 THEN '여자' WHEN a IS NULL THEN '데이터 없음' ELSE '미지정' END FROM sample37;
DECODE NVL
-. Oracle에 CASE 문과 같은 용도로 사용할 수 있는 DECODE 함수 내장
-. NULL 값을 변환하는 함수로 Oracle에서는 NVL 함수, SQL Server에서는 ISNULL 함수가 있음