728x90
[sybase] 분기 처리 그리고 NULL 처리
이번에는 조건에 따라 값을 분기하거나, 꼭 필요한 NULL값을 처리하는 방법에 대해서 알아보도록 하자.
WHERE 절 기본 사용 방법
SQL에서 조건을 지정할 때 가장 기본은 WHERE절이다.
여기서 AND, OR, NOT 같은 논리 연산자를 조합하여 다양한 조건을 만들 수 있다.
SELECT * FROM employee
WHERE dept = 'HR' AND salary > 3000;
조건 분기
CASE 구문은 조건에 따라 출력값을 다르게 설정할 수 있어 if-else 문과 유사한 역할을 한다.
CASE는 SELECT, WHERE, ORDER BY 등 거의 모든 구문에서 사용 가능하다.
실무에서는 코드값에 따라 레이블을 붙이거나 상태 구분을 할 때 많이 사용한다.
SELECT emp_name,
CASE
WHEN salary >= 5000 THEN '고소득'
WHEN salary >= 3000 THEN '중간'
ELSE '저소득'
END AS 급여등급
FROM employee;
NULL은 무엇인가
NULL은 "값이 없다"는 의미이지 0이나 공백과는 다르다!!
초보자들이 가장 많이 실수하는 부분은 = NULL로 비교하는 것이다.
반대로 NULL이 아닌 값을 찾을 때는 IS NOT NULL을 사용한다.
-- 잘못된 예시
WHERE phone = NULL
-- 올바른 예시
WHERE phone IS NULL
NULL 대체 함수
값이 NULL일 때 기본값을 넣어주는 함수로는 ISNULL()과 COALESCE()가 있다.
COALESCE()는 여러 값을 순서대로 평가하여 첫 번째 NOT NULL 값을 반환한다.
ISNULL()은 두 개의 값만 비교할 수 있고, Sybase 내장 함수이다.
COALESCE()는 ANSI 표준 함수이며 여러 값을 다룰 수 있어 더 유연하기 때문에 이를 사용하는걸 추천한다.
-- ISNULL: 첫 번째 값이 NULL이면 두 번째 값 반환
SELECT emp_name, ISNULL(phone, '미입력') AS 연락처
FROM employee;
SELECT emp_name,
COALESCE(phone, alt_phone, '미입력') AS 최종연락처
FROM employee;
CASE + ISNULL() 꿀조합
아래처럼 조합하면 NULL 또는 빈 문자열을 '미입력'으로 표시할 수 있어 실무에서 유용하게 사용할 수 있다.
SELECT emp_name,
CASE
WHEN ISNULL(phone, '') = '' THEN '미입력'
ELSE phone
END AS 연락처상태
FROM employee;

728x90
'DB > 기타 DB' 카테고리의 다른 글
| [sybase] 숫자 함수 (계산부터 반올림까지) (0) | 2025.07.30 |
|---|---|
| [sybase] 문자열 함수 (자주 사용하는 함수) (0) | 2025.07.29 |
| [sybase] 요일 구하는 방법, 날짜 관련 함수 정리 (0) | 2022.05.23 |
| MS-SQL 알면 유용한 명령어 (0) | 2022.05.10 |
| [DB2] Oracle의 NVL 함수는? (0) | 2016.03.09 |
댓글