오라클에서 특수문자(&, ', ", %, @ 등)를 INSERT할 때 주의할 점과 처리 방법

오라클에서 **특수문자(&, ', ", %, @ 등)**를 INSERT할 때 주의할 점과 처리 방법을 정리해 드릴게요.


1. & 문자를 INSERT하는 방법

오라클 SQL*Plus나 SQL Developer에서는 & 문자가 변수 대입 기능(Substitution Variable)으로 인식됩니다.
이를 방지하려면 SET DEFINE OFF 또는 이스케이프 문자를 사용해야 합니다.

방법 1: SET DEFINE OFF 사용 (SQL*Plus, SQL Developer에서 실행)

SET DEFINE OFF; INSERT INTO test_table (col1) VALUES ('AT&T');
 
  • SET DEFINE OFF를 실행하면 & 기호가 변수로 해석되지 않고 문자 그대로 입력됩니다.

방법 2: CHR(38) 사용 (ASCII 코드)

INSERT INTO test_table (col1) VALUES ('AT' || CHR(38) || 'T');
 
  • CHR(38)는 &의 ASCII 코드입니다.

방법 3: 백슬래시(\) 이스케이프 (SQL Developer)

INSERT INTO test_table (col1) VALUES ('AT\&T');
 
  • \&로 입력하면 &가 특수문자로 처리되지 않습니다.

2. 따옴표(', ") 처리 방법

오라클에서는 문자열을 '(작은따옴표)로 감싸므로, 데이터에 '이 포함되면 에러가 발생합니다.

방법 1: 작은따옴표 2개('') 사용

INSERT INTO test_table (col1) VALUES ('O''Reilly');
  • 'O'Reilly' → 'O''Reilly'로 변경하면 정상적으로 삽입됩니다.

방법 2: q 표기법 사용 (문자열 구분)

INSERT INTO test_table (col1) VALUES (q'[O'Reilly]');
  • q'[...]를 사용하면 문자열 내 '을 그대로 사용할 수 있습니다.

3. %, _, @ 등의 특수문자

  • %와 _는 LIKE 연산에서 와일드카드로 사용되지만, INSERT에서는 그대로 입력해도 문제가 없습니다.
  • @도 일반적으로 문제없이 삽입됩니다.
INSERT INTO test_table (col1) VALUES ('email@example.com'); INSERT INTO test_table (col2) VALUES ('100% Pure');

4. 역슬래시(\) 처리

  • 오라클에서는 기본적으로 \를 이스케이프 문자로 인식하지 않습니다.
  • 그대로 입력해도 문제가 없습니다.
INSERT INTO test_table (col1) VALUES ('C:\Users\Oracle');

요약

특수문자 해결 방법
& SET DEFINE OFF, CHR(38), \& 사용
' (작은따옴표) ''로 변경, q'[...]' 사용
" (큰따옴표) 그대로 입력 가능하지만, 컬럼명으로 사용 시 "column_name" 형태로 처리
%, _ 그대로 입력 가능 (LIKE 연산에서는 ESCAPE 처리 필요)
@ 그대로 입력 가능
\ 그대로 입력 가능

 

특수문자 삽입 시 위 방법을 참고해서 적용하면 됩니다! 😊