oracle union caluse: что происходит, если существует несоответствие имени столбца - PullRequest
2 голосов
/ 02 марта 2011

В оракуле, когда я это делаю: выберите table1.col1 из объединения table1 выберите table2.col2 из table2

Это дает мне объединение всех записей и имя столбца результата col1.

Разве это не должно выдавать ошибку вместо несоответствия имен столбцов?

Ответы [ 2 ]

6 голосов
/ 02 марта 2011

Пока типы данных столбца не совпадают, имена столбцов всегда будут поступать из первого запроса.Он не должен (и, как вы обнаружили, не) выдавать ошибку.

Если типы данных не совпадают, даже если неявное преобразование возможно, вы, как правило, получите ошибку

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
2 голосов
/ 02 марта 2011

union не заботится о названии столбцов, оно заботится только о количестве столбцов и, в конечном итоге, об их типе.

Обычно имя столбцов берется из первого запроса в union.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...