2011-03-02 2 views
2

가있는 경우 어떤 일이 내가 할 때 발생 : 표 2오라클 노조 caluse는 : 열 이름 불일치, 오라클에서

에서 표 조합을 선택 table2.col2에서 선택 table1.col1 그것은 나에게 모든 레코드의 조합을 제공하고 결과 컬럼의 이름은 col1입니다.

열 이름의 불일치 때문에 오류가 발생하지 않아야합니까?

+0

가 아니 ... 결과 세트로 한 첫 번째 선택에서 생성되는 오류거야 " 유형 "이 일치하면 두 번째 선택에서 결과 세트가 추가됩니다. –

답변

5

열 데이터 형식이 일치하지 않는 한 열 이름은 항상 첫 번째 쿼리에서 가져옵니다. 발견해서는 안되며 오류를 던져서는 안됩니다.

데이터 형식은 암시 적 변환이 가능하더라도, 일치하지 않는 경우, 당신은 일반적으로

SQL>/
select 1 a from dual union select '2' from dual 
     * 
ERROR at line 1: 
ORA-01790: expression must have same datatype as corresponding expression 

SQL>/
select '1' a from dual union select 2 from dual 
     * 
ERROR at line 1: 
ORA-01790: expression must have same datatype as corresponding expression 
+0

Oracle에 대해서는 잘 모르지만, 비 파괴적인 변환이 가능한 한 MySQL과 PostgreSQL은 형식 불일치에 대해 불평하지 않습니다. 어쩌면 구성 옵션 일 수도 있습니다. – krtek

+0

@Krtek - Oracle은 일반적으로 데이터 유형 변환을 수행하지 않습니다. 내 대답에 테스트 케이스 게시. –

+0

왜 오류가 없어야합니까? 그것은 2 개의 사과 + 3 개의 오렌지 = 5 개의 사과라고 말하는 것과 같습니다. 내가 뭘 놓치고 있니? – Victor

2

union은 열 이름을 신경 쓰지 않으며 열의 수와 결국 그 열의 유형에만 신경을 씁니다.

일반적으로 열의 이름은 union의 첫 번째 쿼리에서 가져옵니다.

+1

"보통"? . . . –