Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server IN 조건 완벽 정리: OR 조건을 간결하게 대체하는 방법

SQL Server(Transact-SQL)의 IN 조건은 SELECT, INSERT, UPDATE, DELETE 문을 작성할 때 여러 개의 OR 조건을 반복해서 나열해야 하는 번거로움을 줄여 주는 구문입니다. 특정 열의 값이 지정한 목록 중 하나와 일치하는지 확인할 때 매우 유용합니다.

IN 조건 기본 문법

expression IN (값1, 값2, ... 값n);

매개변수 설명

  • expression: 일치 여부를 검사할 값 또는 열
  • 값1, 값2, ... 값n: expression과 비교할 값들의 목록

참고 사항

  1. SQL Server의 IN 조건은 표현식의 값이 목록의 값1, 값2, ..., 값n 중 하나와 일치하면 해당 레코드를 반환합니다.
  2. SQL Server에서 IN 조건은 흔히 IN 연산자라고도 불립니다.

예제 1: 문자열 값과 함께 사용

다음 예제는 직원(nhanvien) 테이블을 사용하며, ho는 성(last name)을 의미합니다.

SELECT *
FROM nhanvien
WHERE ho IN ('Smith', 'Anderson', 'Johnson');

이 쿼리는 직원의 성이 Smith, Anderson, Johnson 중 하나인 행들을 반환합니다. SELECT 절에 *를 사용했기 때문에 결과 집합에는 테이블의 모든 필드가 포함됩니다.

위 예제는 아래의 SELECT 문과 동일하게 동작합니다.

SELECT *
FROM nhanvien
WHERE ho = 'Smith'
OR ho = 'Anderson'
OR ho = 'Johnson';

IN 조건을 사용하면 쿼리가 훨씬 짧아지고 가독성도 크게 향상됩니다.

예제 2: 숫자 값과 함께 사용

SELECT *
FROM nhanvien
WHERE nhanvien_id IN (1, 2, 3, 4, 10);

이 쿼리는 직원 ID가 1, 2, 3, 4, 10 중 하나인 직원들을 반환합니다. 위 명령은 아래 명령과 동일합니다.

SELECT *
FROM nhanvien
WHERE nhanvien_id = 1
OR nhanvien_id = 2
OR nhanvien_id = 3
OR nhanvien_id = 4
OR nhanvien_id = 10;

예제 3: NOT 연산자와 함께 사용

다음 예제의 ten은 이름(first name)을 의미합니다.

SELECT *
FROM nhanvien
WHERE ten NOT IN ('Sarah', 'John', 'Dale');

이 쿼리는 이름이 Sarah, John, Dale이 아닌 직원 행들로 결과 집합을 구성합니다. 원하는 값을 찾는 것보다 제외할 값을 지정하는 것이 더 편리한 경우에 NOT IN이 유용하게 활용됩니다. 위 예제는 아래 명령과 동일합니다.

SELECT *
FROM nhanvien
WHERE ten <> 'Sarah'
AND ten <> 'John'
AND ten <> 'Dale';

마무리

IN 조건은 여러 개의 OR 조건을 하나의 간결한 식으로 대체할 수 있어 코드 가독성과 유지보수성을 크게 높여 줍니다. 특정 값 목록에 포함되는지 확인할 때는 IN, 제외하고 싶을 때는 NOT IN을 활용하면 더 깔끔하고 효율적인 SQL 쿼리를 작성할 수 있습니다.