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 커맨드로 선언한 변수는 문...