SQL IN 조건문이란?
여러 줄 데이터를 조회 조건으로 바꾸는 방법
WMS Tools 편집팀 · 2026년 6월
WMS 운영이나 개발 과정에서 특정 로케이션 목록, 박스 번호 묶음, 주문 번호 범위를 SQL로 조회해야 할 때가 자주 있습니다. 값이 몇 개 되지 않으면 직접 입력하면 되지만, 수십 개 이상의 값이 있다면 하나씩 입력하기 어렵습니다. 이럴 때 SQL IN 조건문을 활용하면 여러 값을 한 번에 조회 조건으로 사용할 수 있습니다.
SQL IN 조건문이란?
IN 조건문은 특정 컬럼의 값이 주어진 목록 중 하나와 일치하는 행을 조회할 때 사용합니다.OR 조건을 여러 번 사용하는 것과 같은 결과를 만들지만, 훨씬 짧고 가독성이 좋습니다.
기본 문법
WHERE LOCATION = 'A-01-01' OR LOCATION = 'A-01-02' OR LOCATION = 'A-01-03'
WHERE LOCATION IN ('A-01-01', 'A-01-02', 'A-01-03')WMS 운영·개발에서 자주 쓰는 상황
다음과 같은 상황에서 IN 조건문이 유용하게 쓰입니다.
✔ 특정 로케이션 목록 일괄 조회
재고 실사 대상 로케이션 목록을 Excel에서 복사해 SQL 조회 조건으로 변환하면, WMS 시스템에서 해당 위치의 재고 데이터를 한 번에 확인할 수 있습니다.
✔ 특정 박스·파레트 번호 상태 조회
출고 작업 중 특정 박스 번호들의 처리 상태를 확인하거나, 입고 대기 중인 파레트 번호 묶음을 조회할 때 사용합니다.
✔ WMS 개발 테스트 데이터 조회
테스트용 로케이션 데이터를 DB에 입력한 뒤, 생성한 코드 목록을 조건으로 넣어 데이터가 올바르게 저장됐는지 검증합니다.
✔ 오류 대상 주문·건 번호 추출
처리 오류가 발생한 주문 번호 목록을 로그에서 추출하고, IN 조건으로 묶어 오류 건만 선별 조회할 수 있습니다.
문자열 조건과 숫자 조건의 차이
SQL에서 IN 조건을 작성할 때, 값의 타입에 따라 표기 방식이 달라집니다.
문자열 컬럼
로케이션 코드, 박스 번호, 주문 코드처럼 문자열로 저장된 값은 반드시 작은따옴표로 감싸야 합니다.
LOCATION IN ( 'A-01-01', 'A-01-02', 'A-01-03' )
숫자 컬럼
정수(INT) 또는 숫자 타입으로 저장된 ID 값은 작은따옴표 없이 그대로 사용합니다.
ORDER_ID IN ( 101, 102, 103 )
작은따옴표 사용 기준
SQL에서 문자열 리터럴은 작은따옴표(')로 감쌉니다. 큰따옴표는 컬럼명이나 테이블명에 사용되며, 값에는 사용하지 않습니다.
| 컬럼 타입 | 작은따옴표 필요 여부 | 예시 |
|---|---|---|
| VARCHAR, CHAR, TEXT | 필요 | 'A-01-01' |
| INT, BIGINT, NUMBER | 불필요 | 101 |
| DATE, DATETIME | 필요 | '2026-06-01' |
중복 제거와 공백 제거가 필요한 이유
중복 제거
Excel에서 복사하거나 여러 소스에서 합친 목록에는 같은 값이 중복으로 포함되는 경우가 있습니다. IN 조건문에 중복 값이 있어도 SQL 실행 결과는 동일하지만, 조건문이 불필요하게 길어집니다. 사전에 제거해두면 쿼리가 간결해집니다.
앞뒤 공백 제거
Excel 셀이나 로그 파일에서 복사한 값에는 눈에 보이지 않는 앞뒤 공백이 포함되는 경우가 있습니다. 공백이 포함된 채로 조건문을 만들면 'A-01-01 '처럼 실제 DB 값과 다른 조건이 생성되어 조회 결과가 비어 있을 수 있습니다.
운영 DB에서 사용할 때 주의사항
⚠ 조건 범위를 반드시 확인
생성된 IN 조건문을 실행하기 전, 목록의 값 개수와 내용이 의도한 범위인지 반드시 확인하세요. 잘못된 범위의 데이터를 조회하거나 수정·삭제하면 복구가 어렵습니다.
⚠ SELECT로 먼저 조회 후 DML 실행
UPDATE나 DELETE에 IN 조건을 사용하기 전, 동일한 IN 조건으로 SELECT를 먼저 실행해 영향 대상을 확인하세요. 예상과 다른 행이 포함되어 있을 수 있습니다.
⚠ 대량 IN 조건의 성능 영향
IN 목록에 수백~수천 개의 값이 있으면 쿼리 성능에 영향을 줄 수 있습니다. 운영 중인 시스템의 DB 특성에 따라 실행 계획을 확인하고, 필요 시 임시 테이블 등 다른 방법을 검토하세요.
⚠ SQL 인젝션 방어
이 도구는 정적 문자열을 IN 조건으로 변환합니다. 생성된 SQL을 애플리케이션 코드에 직접 삽입해 동적 쿼리를 만들 경우 SQL 인젝션 위험이 있으므로, 반드시 Prepared Statement나 Parameterized Query를 사용하세요.
SQL IN 조건문, 지금 바로 생성해보세요
여러 줄로 된 코드 목록을 붙여넣으면 SQL IN 조건문으로 즉시 변환됩니다. 컬럼명, 작은따옴표, 중복 제거를 옵션으로 조합할 수 있습니다.
SQL IN 조건문 생성기 열기 →