2014-11-10 2 views
0

Я использую сайт (http://www.w3schools.com/sql/sql_union.asp), и я пытаюсь понять UNION и UNION ALL. Небольшая часть таблиц «Клиенты» и «Поставщики» приведена в изображении ниже.Союз для столбцов разных типов данных в SQL

Я запутался, почему, когда я бегу UNION для колонн City от Customers и PostalCode из Suppliers которые Колонны различных типов данных я не получаю сообщение об ошибке. (Посещение в Image 2)

enter image description here enter image description here

Спасибо

+1

Союз объединяет два набора результатов вместе в один конечный набор результатов, но они имеют одинаковые начальные столбцы. Поэтому, если вы объединяете эти два запроса, как вы предположили, в итоге вы получите столбцы и почтовые индексы в той же колонке. Union ALL просто делает то же самое, но ничего не бросает, обычный Union тянет отдельные записи. – Zack

+0

Возможно, он использует тип данных первой таблицы или может использовать наименее ограничивающий тип данных. Попробуйте изменить порядок двух сторон профсоюза и посмотреть, что произойдет. –

+0

Вне пределов персонажей Varchars я не вижу, как они будут разными типами данных. Оба они выглядят как varchars, так как ни один числовой/целочисленный тип данных не вернет целые числа с начальным нулем. – Zack

ответ

4

Определения столбцов, которые являются частью UNION операции не должны быть одинаковыми, но они должны быть совместимы через неявное преобразование. Когда типы данных различаются, результирующий тип данных определяется на основе правил для data type precedence. Если типы совпадают, но отличаются от precision, scale, or length,, результат определяется на основе тех же правил для комбинирования выражений.

Смежные вопросы