SQL IN 절 생성기

값을 한 줄에 하나씩 붙여넣으면 따옴표·열 이름 옵션으로 SQL IN 또는 NOT IN 절을 만들고, 긴 목록은 1,000개씩 여러 그룹으로 나눕니다.

나누는 이유: Oracle은 IN 목록에 값이 1000개를 넘으면 거부하므로(ORA-01795) 그룹 크기는 1000에서 시작합니다. PostgreSQL·MySQL·SQL Server에는 정해진 개수가 없지만, 값이 수천 개가 넘으면 구문 분석이 느려지고 SQL Server는 아예 거부할 수도 있습니다.

결과
IN ('apple', 'banana', 'cherry')
IN ('apple', 'banana', 'cherry')

목록을 SQL IN 절로 변환

스프레드시트, 로그 파일, 텍스트 문서에서 값 한 열을 복사해 한 줄에 하나씩 붙여넣으면 WHERE 문에 바로 넣을 수 있는 IN (...) 절이 만들어집니다. 빈 줄은 무시되고 각 값의 앞뒤 공백은 자동으로 제거되므로, 지저분하게 붙여넣은 데이터도 깔끔한 쉼표 구분 목록으로 정리됩니다. 출력은 입력하는 즉시 갱신되며 클릭 한 번으로 복사할 수 있습니다. 배치에서 기본값 “한 줄로” 대신 “한 줄에 값 하나”나 “한 줄에 값 여러 개”를 고르면 절 자체에 줄바꿈이 들어가, 복사하거나 .sql 파일로 내려받아도 그대로 남습니다.

따옴표 처리, 이스케이프, 열 이름

텍스트 열에는 값을 따옴표로 감싸기를 켜면 각 값이 작은따옴표로 감싸지고, 숫자 열에는 꺼두면 IN (1, 2, 3)처럼 따옴표 없는 숫자가 출력됩니다. 값 안의 작은따옴표는 두 번 겹쳐 안전하게 이스케이프되므로 O'Brien은 쿼리를 깨뜨리지 않고 'O''Brien'이 됩니다. 데이터베이스를 “MySQL, MariaDB”로 고르면 백슬래시도 두 번 씁니다. 이들은 백슬래시를 이스케이프 문자로 읽어서 백슬래시로 끝나는 값이 문자열을 닫지 못하기 때문입니다. NO_BACKSLASH_ESCAPES로 설정한 서버라면 기본값인 “PostgreSQL, SQL Server, SQLite, Oracle”을 그대로 두세요. 열 이름을 입력하면 status IN ('active', 'pending')처럼 완전한 조건식을 얻을 수 있습니다. 값 제외 (NOT IN)를 켜면 반대 조건식이 나오고, 긴 목록을 여러 IN() 그룹으로 분할을 켜면 그룹당 개수(기본 1,000개, 변경 가능)를 넘는 목록이 여러 절로 쪼개집니다. 오라클처럼 IN 목록 개수에 상한이 있는 경우를 위한 기능입니다. 이때는 열 이름이 있어야 하며, 나뉜 그룹은 IN이면 OR로, NOT IN이면 AND로 묶입니다.

자주 묻는 질문

값 안의 작은따옴표는 어떻게 처리되나요?

따옴표 감싸기를 켜면 값 안의 작은따옴표는 표준 SQL 문자열 규칙에 따라 두 번 겹쳐 이스케이프됩니다. 예를 들어 O'Brien은 'O''Brien'으로 출력되며 대부분의 SQL 데이터베이스에 안전하게 붙여넣을 수 있습니다.

숫자 열에도 값을 따옴표로 감싸야 하나요?

아니요. 따옴표 감싸기를 꺼두면 IN (1, 2, 3)처럼 숫자가 따옴표 없이 출력됩니다. 작은따옴표가 필요한 문자열, 날짜 등 텍스트 열에만 켜세요.

값을 꼭 한 줄에 하나씩 넣어야 하나요?

아닙니다. 구분 기호로 줄바꿈·쉼표·탭·세미콜론·공백이나 이 모두를 고를 수 있고, CSV나 TSV 파일을 열면 알맞은 구분 기호가 골라집니다.

결과 목록을 여러 줄로 나누거나 MySQL에 맞게 쓸 수 있나요?

네. 배치는 “한 줄로”에서 시작하고, “한 줄에 값 하나”나 “한 줄당 값 개수” 칸이 붙는 “한 줄에 값 여러 개”를 고르면 절 자체에 줄바꿈이 들어가 복사·내려받기에도 그대로 남습니다. 나뉜 그룹도 모두 같은 방식으로 배치됩니다. 데이터베이스는 작은따옴표만 두 번 쓰는 “PostgreSQL, SQL Server, SQLite, Oracle”에서 시작하고, “MySQL, MariaDB”를 고르면 백슬래시도 두 번 써서 백슬래시로 끝나는 값이 문자열을 닫지 못하는 일이 없습니다.