내장함수 (2) | Null 함수
날짜 및 시간 함수
날짜는 단순히 문자열로 저장하여 관리할 수 있지만 날짜형 데이터로 저장하여 관리하면 편리합니다.
날짜를 더하거나 차이를 구하는 연산을 쉽게할 수 있기 때문입니다.
DATEADD 함수
DATEADD()는 입력된 날짜에 사용자가 원하는 날짜만큼 더한 날짜를 반환하는 함수입니다.
아래는 DATEADD 함수를 활용한 예시입니다.
SELECT orderid "주문번호", orderdate "주문일", DATEADD(dd, 10, orderdate) "확정"
FROM Orders;
SYSDATETIME 함수
SYSDATETIME() 함수는 SQL Server의 현재 시간을 반환하는 함수입니다.
SELECT SYSDATETIME();
-- 현재시간
SELECT DAY(SYSDATETIME());
-- 현재 날짜
NULL 값 처리
집계 함수를 사용할 때 NULL 값이 포함된 행에 대하여 다음과 같은 주의가 필요합니다.
- 'NULL + 숫자' 연산의 결과는 NULL
- 집계 함수를 계산할 때 NULL 이 포홤된 행은 집계에서 빠집니다.
- 집계 함수에 적용되는 행이 하나도 없으면 SUM, AVG 함수의 결과는 NULL이 되고,
COUNT 함수의 결과는 0이 됩니다.
[ 예제 ]
SELECT price+100
FROM Mybook
WHERE bookid=3;
SELECT SUM(price), AVG(price), COUNT(*),COUNT(price)
FROM Mybook
IS NULL , IS NOT NULL
NULL 값을 찾을 때는 '=' 연산자가 아닌 'IS NULL' 을 사용하고,
NULL 이 아닌 값을 찾을 때는 <> 연산자가 아닌 IS NOT NULL 을 사용합니다.
SELECT *
FROM Mybook
WHERE price is null;
ISNULL 함수
ISNULL() 함수는 NULL 값을 다른 값으로 대체하는 함수입니다.
ISNULL(A,B)
A의 값이 Null 인 경우 B값으로 대체합니다.
SELECT name "이름", ISNULL(phone, '연락처없음') "전화번호"
FROM Customer
[추가]
Q) 양쪽 공백제거 하는 방법
-> TRIM() 사용 // SQL SERVER 2017버전부터 제공...
SELECT LTRIM(RTRIM(' 공백제거 '))
Q) 문자열 함수에 문자 타입 안넣고 DATETIME 등… 다른 형식 데이터 넣으면 어케 되는것인지..
→ 자동으로 변환하지만, 그렇지 못한 경우도 있기 때문에, CONVERT 함수를 통해서 변환을 하는게 좋습니다.