본문 바로가기
DB/기타 DB

[sybase] 분기 처리 그리고 NULL 처리

by 쑨s 2025. 7. 31.
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;

 

 

[sybase] 분기 처리 그리고 NULL 처리

728x90

댓글