Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразование типов при UNION  [new]
Leon.
Member

Откуда: Moscow
Сообщений: 268
Объясните, пожалуйста, следущее явление:

пишу составной запрос UNION
SELECT [Date_entry], [RUR], [USD], [EUR], [Source], [Dest]
FROM dbo.qryLedgDebt

UNION ALL SELECT [Date_entry], [RUR], [USD], [EUR], [Source], [Dest]
FROM dbo.qryLedgPayment
Все ОК, тип поля [Dest] -- nvarchar.
Но если к этому запросу добавить строку
UNION ALL SELECT [Date_entry], [RUR], [USD], [EUR], [Source], [Dest] 
FROM dbo.qryLedgSupply
, где [Dest] -- smallint, то QA пытается преобразовывать [Dest] первых 2 подзапросов из nvarchar --> smallint .

Вопрос -- почему так происходит, почему преобразование не smallint --> nvarchar (я ведь в первых строках UNION "неявно" указываю этот тип nvarchar для колонки [Dest]?) Может есть какие-н "приоритеты типов", согласно которым производится преобразование? Вобщем, поучите неразумного? :-)
29 ноя 04, 12:25    [1143310]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов при UNION  [new]
Шотов Вадим
Member

Откуда: Киев
Сообщений: 309
Перед каждым полем , в преобразовании типа которого сомневаетесь -
CONVERT(type, field)
29 ноя 04, 12:26    [1143320]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов при UNION  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вопрос -- почему так происходит, почему преобразование не smallint --> nvarchar (я ведь в первых строках UNION "неявно" указываю этот тип nvarchar для колонки [Dest]?) Может есть какие-н "приоритеты типов", согласно которым производится преобразование? Вобщем, поучите неразумного? :-)

Неявное преобразование типов происходит не от порядка запросов в UNION а от Data Type Precedence. По которому тип smallint имеет более высокий проиритет чем nvarchar.
29 ноя 04, 12:28    [1143331]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов при UNION  [new]
Leon.
Member

Откуда: Moscow
Сообщений: 268
Data Type Precedence -- теперь ясно, спасибо.
Буду конвертить CONVERT.
29 ноя 04, 12:33    [1143358]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить