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

공유하기

  • Add this entry to Hatena Bookmark
  • 0

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 개의 행이 만들어졌습니다.

치환변수에 대해서

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

1Z0-071 - 전체 목차 3.데이터 제한 및 정렬하기 - 목차 치환변수란? SQL*Plus 에서는 치...
1Z0-071 - 전체 목차 3.데이터 제한 및 정렬하기 - 목차 DEFINE 커맨드 SQL문 실행전에 ...