Oracle에서 예약어를 어떻게 피할 수 있습니까?


134

TSQL에서는 Select [table] from tablename"table"이라는 열을 선택하는 것과 같은 것을 사용할 수 있습니다 .

오라클의 예약어에 대해서는 어떻게해야합니까?

편집 : 대괄호, 큰 따옴표, 작은 따옴표 및 백 따옴표를 시도했지만 작동하지 않습니다 ...

더 명확히하기 위해 누군가가 comment라는 열을 가지고 있습니다. 이것은 예약어이므로 오라클은 쿼리를 파싱 할 때 실패로 선택하려고 노력하고 있습니다. tablename에서 "comment"를 선택했지만 작동하지 않았습니다. 사건을 확인하고 다시 올게요


답변:


195

빠른 검색에서, 오라클은 (큰 따옴표를 사용하는 표시 ""table") 분명히 올바른 경우 필요 사람이 세트의 호환성을 위해 큰 따옴표를 사용하는 경우를 제외하고 사용한다 (`)로, MySQL의 기본값을 관심에 대해 -whereas을.


2
큰 따옴표를 사용하여 단어를 탈출하려고 시도했지만 작동하지 않았기 때문에 표시했습니다.
Spence

13
기본적으로 Oracle은 식별자를 모두 대문자로 만듭니다. 따라서 소문자 나 특수 문자가 필요하거나 식별자가 Oracle 예약어 인 경우 큰 따옴표로 묶어야합니다. 큰 따옴표는 대소 문자를 유지하므로 식별자도 올바른 대소 문자 여야합니다.
메트로

Oracle 11g Release 2 Express 데이터베이스에 충돌하는 SQL Developer v4를 사용하여 "별칭"필드가있는 테이블을 만들었습니다. 별명 대신 "ALIAS"를 쓸 때 내 선택이 효과가있었습니다.
Broken_Window

트리거에 대해 작동하지 않으면 ORA-30507을 위반하는 이름 (예 : DATABASE)으로 테이블에 대한 트리거를 작성하십시오.
Fleuv

대문자 "TABLE"로 사용해보십시오.
RSHAP

34

오라클은 일반적으로 SQL 문에서 식별자 이름을 구분하기 위해 큰 따옴표를 요구합니다. 예 :

SELECT "MyColumn" AS "MyColAlias"
FROM "MyTable" "Alias"
WHERE "ThisCol" = 'That Value';

그러나 큰 따옴표를 생략하면 은혜롭게 식별자를 대문자로 자동 변환합니다.

SELECT MyColumn AS MyColAlias
FROM MyTable Alias
WHERE ThisCol = 'That Value';

내부적으로 다음과 같이 변환됩니다.

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';

8

키워드를 열 이름 중 하나로 사용했을 때 큰 따옴표는 oracle에서 작동했습니다.

예 :

select t."size" from table t 

3

Oracle은 큰 따옴표를 사용하지만 "TABLE"과 같이 개체 이름을 대문자로 입력해야합니다. 큰 따옴표없이 객체를 생성하는 경우 기본적으로

CREATE TABLE table AS ...

오라클은 객체를 대문자 로 만들 것 입니다. 그러나 인용 부호를 사용하지 않으면 참조는 대소 문자를 구분하지 않습니다!


-8

TABLEOracle에서 예약 했기 때문에 열의 이름을 다른 이름으로 바꿔야합니다 .

Oracle보기에서 Oracle의 예약어를 모두 볼 수 있습니다 V$RESERVED_WORDS.


나는 ORA-00942시도 할 때 얻는다 select * from V$RESERVED_WORDS.
ceving
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.