[oracle] Oracle SQL Developer에서 ‘trinidad & tobago’로 변수 대체를 방지하는 방법

나는 오라클 SQL 개발자 2.1 대화 상자에서이 문을 실행하려고하면 “대체 변수 입력” 에 대한 대체 값을 요청하는 팝업을 토바고 ,

update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';

성명서의 목적을 모호하게 chr(38)하거나 u'trinidad \0026 tobago'두 가지 모두에 의지하지 않고이를 피할 수있는 방법은 무엇입니까?



답변

쿼리 전에 이것을 호출하십시오.

set define off;

또는 해키 :

update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';

SQL * Plus 튜닝 에서 :

SET DEFINE OFF는 대체 변수를 해당 값으로 바꾸는 명령 구문 분석을 비활성화합니다.


답변

SQL * Plus SET DEFINE ?에서 스크립트 맨 위에 놓으면 일반적으로이 문제가 해결됩니다. Oracle SQL Developer에서도 작동 할 수 있습니다.


답변

이것은 CHAR (38)없이 요청한대로 작동합니다.

update t set country = 'Trinidad and Tobago' where country = 'trinidad & '|| 'tobago';

create table table99(col1 varchar(40));
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
SELECT * FROM table99;

update table99 set col1 = 'Trinidad and Tobago' where col1 = 'Trinidad &'||'  Tobago';


답변

나도 이것에 대해 약간의 문제가 있었다. DB에 대한 연결을 설정하려고 할 때마다 뭔가 시작되었습니다 ..

나를 위해 일한 것은 구성했을 수있는 시작 스크립트를 제거하는 것입니다!

Tools>Preferences...>Database, “연결 시작 스크립트의 파일 이름”이라는 텍스트 상자에있는 파일 경로를 제거하십시오!


답변

스캔 끄기; 위의 명령도 작동합니다.


답변