insert,update문에서 치환변수 역할 특수문자 ( & )를 문자열의 문자로 등록하기

Oracle DB

SQL문에서 사용되는 앰퍼샌드(&)는 치환변수의 선두에 붙는 특수문자로 사용됩니다. 이 글에서는 테이블에 데이터를 Insert 또는 Update할 때, 문자열의 일부로서 등록하는 방법을 소개합니다.

치환변수 역할

다음과 같이 NY&NY문자열의 &NY 는 치환변수 NY를 의미합니다. 치환 전후를 old, new에 표시하고 치환 후 SQL문이 실행됩니다.

SQL> insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NY&NY');
Enter value for ny: TEST
old   1: insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NY&NY')
new   1: insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NYTEST')
insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NYTEST')

한글 메시지는 다음과 같습니다.

ny의 값을 입력하십시오: TEST

구   1: insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NY&NY')
신   1: insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NYTEST')
insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NYTEST')

문자열의 문자역할

다음과 같이 NY\&NY앰퍼샌드(&) 앞에 escape문자 역 슬래시( \ )를 붙이면 앰퍼샌드(&) 는 문자로서 인식됩니다.

SQL> insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NY\&NY');
1 개의 행이 만들어졌습니다.

실제 테이블에 저장되는 문자열은 다음과 같이 앰퍼샌드(&) 문자로 Insert됩니다.

SQL> select deptno, dname,loc from dept;

DEPTNO DNAME      LOC
------ ---------- -------------
    10 ACCOUNTING NEW YORK
    20 RESEARCH   DALLAS
    30 SALES      CHICAGO
    40 OPERATIONS BOSTON
    90 ACCOUNTING NY&NY

참고로 다음과 같이 SET DEFINE OFF 명령으로 치환변수를 사용 못하도록 설정하면 특수문자 앰퍼샌드(&) 를 문자로 인식합니다. 반대로 SET DEFINE ON 명령은 치환변수 사용을 허용합니다.

SQL> SET DEFINE OFF
SQL> insert into DEPT (DEPTNO,DNAME,LOC) values (90,'ACCOUNTING','NY&NY');
1 개의 행이 만들어졌습니다.

치환변수에 대해서

치환변수에 대한 더 자세한 내용은 다음 글을 참조하십시오.

Oracle 치환 변수
1Z0-071 - 전체 목차 3.데이터 제한 및 정렬하기 - 목차 치환변수란? SQL*Plus 에서는 치환변수라는 기능으로 WHERE구의 조건값을 동적으로 지정할 수 있습니다. 조건값 만이 다른 유사한 SQL을 반복...
Oracle DEFINE 및 VERIFY COMMAND
1Z0-071 - 전체 목차 3.데이터 제한 및 정렬하기 - 목차 DEFINE 커맨드 SQL문 실행전에 다시 한 번 치환변수의 값을 셋팅해둘 수 있습니다. DEFINE 변수명 = 값 예시 DEFINE 커맨드로 선언한...
제목과 URL을 복사했습니다