본문 바로가기

SQL 파라미터 바인더

브라우저 처리

SQL의 :이름 자리표시자에 값을 넣어 실제 실행할 쿼리를 만듭니다. 문자열·주석·::캐스트 안은 건드리지 않고, 값이 없는 자리와 쓰이지 않은 값을 끝에 알려 줍니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
SQL 파라미터 바인더 샘플 실행

애플리케이션 로그에는 WHERE category = :category처럼 자리표시자가 남은 쿼리와 값이 따로 찍히는 경우가 많습니다. 이 도구는 두 번째 칸에 적은 이름=값을 각 :이름 자리에 넣어 DB 도구에서 바로 실행해 볼 수 있는 쿼리를 만듭니다.

브라우저 처리
샘플 결과
SELECT * FROM tools WHERE category = 'dev' AND score >= 80 AND note <> 'a:b';

-- 바인딩: category, score · 값 없음: 없음 · 쓰이지 않은 값: 없음
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

SQL 파라미터 바인더 사용 가이드

애플리케이션 로그에는 WHERE category = :category처럼 자리표시자가 남은 쿼리와 값이 따로 찍히는 경우가 많습니다. 이 도구는 두 번째 칸에 적은 이름=값을 각 :이름 자리에 넣어 DB 도구에서 바로 실행해 볼 수 있는 쿼리를 만듭니다.

자리표시자는 SQL 문법을 따라 찾습니다. 'a:b' 같은 문자열 안, -- 와 /* */ 주석 안, PostgreSQL의 ::text 캐스트는 자리표시자로 보지 않으므로 엉뚱한 곳이 바뀌어 쿼리가 깨지지 않습니다.

숫자는 따옴표 없이, true·false·null은 TRUE·FALSE·NULL로, 나머지는 작은따옴표로 감싸 넣고 값 속 작은따옴표는 두 번 씁니다. 007처럼 문자열로 남겨야 하는 값은 '007'로 적으면 됩니다. 결과 끝의 주석 줄에 넣은 값, 값이 없는 자리, 쓰이지 않은 값이 정리됩니다.

사용 방법

  1. 'SQL' 칸에 :이름 자리표시자가 있는 쿼리를 붙여 넣습니다.
  2. '값' 칸에 category=dev처럼 이름=값을 한 줄에 하나씩 적습니다. 문자열로 남길 숫자는 따옴표로 감쌉니다.
  3. '실행'을 누르고 끝의 '-- 바인딩 · 값 없음 · 쓰이지 않은 값' 줄로 빠진 값이 없는지 확인합니다.

예시: 로그에 찍힌 쿼리 재현

입력
SELECT * FROM tools WHERE category = :category AND score >= :score AND note <> 'a:b';
---
category=dev
score=80
결과
SELECT * FROM tools WHERE category = 'dev' AND score >= 80 AND note <> 'a:b';

-- 바인딩: category, score · 값 없음: 없음 · 쓰이지 않은 값: 없음

문자열 'a:b' 안의 :b는 자리표시자로 보지 않아 그대로 남았습니다.

이럴 때 쓰면 좋아요

  • 애플리케이션 로그의 쿼리와 파라미터를 합쳐 DB 콘솔에서 다시 실행할 때
  • 느린 쿼리를 실제 값으로 바꿔 EXPLAIN으로 실행 계획을 볼 때
  • 버그 리포트에 재현 가능한 완성 쿼리를 첨부할 때
  • MyBatis·JPA 등의 이름 있는 파라미터 쿼리를 수동으로 시험할 때

문제가 생겼을 때

'값은 이름=값 형식으로 적으세요' 오류

값 칸의 줄에 = 이 없습니다. category=dev처럼 이름과 값을 =로 이어 한 줄에 하나씩 적으세요. 이름 앞의 :는 있어도 됩니다.

null을 넣었더니 결과가 하나도 안 나옴

= :x 자리에 NULL이 들어가면 col = NULL이 되어 항상 거짓입니다. 이 경우 쿼리를 col IS NULL로 바꿔야 합니다.

활용 팁

  • ?나 $1 같은 순번 자리표시자는 바꾸지 않습니다. 이름 있는 :name 형식만 처리합니다.
  • 만든 쿼리는 실제 값이 문자열로 들어간 것이므로 운영 코드에 그대로 쓰지 말고 확인용으로만 쓰세요. 코드에서는 바인딩을 유지해야 SQL 인젝션을 막을 수 있습니다.

자주 묻는 질문

같은 이름이 여러 번 나오면 어떻게 되나요?

모든 자리에 같은 값이 들어갑니다. :id가 세 번 나오면 세 곳 모두 같은 값으로 바뀝니다.

날짜 값은 어떻게 넣나요?

2026-10-01처럼 적으면 '2026-10-01' 문자열로 들어갑니다. 대부분의 DB는 날짜 컬럼과 비교할 때 이 형식을 날짜로 바꿔 읽습니다.

MySQL의 @변수나 SQL Server의 @param도 바꾸나요?

아니요. @로 시작하는 이름은 DB 변수와 겹칠 수 있어 건드리지 않습니다. :이름 형식으로 바꾼 뒤 넣으세요.