Вход | Регистрация

Информационные технологии :: Администрирование

Запрос к MS SQL. В условии разные типы. Как привести к одному?

Запрос к MS SQL. В условии разные типы. Как привести к одному?
Я
   arsik
 
22.09.16 - 13:37
Собственно конфигурация асторовская ВМС - работает с отдельной базой на MS SQL. Попался на глаза запрос в котором условие соединения 2х полей (JOIN ExchangeData ed ON (ed.KeyFields = 'ID' AND ed.KeyValues = u.ID AND ed.TableName = 'Units'))
Вот в этом условии:
ed.KeyValues тип "nvarchar"
u.ID тип "int"

Я так понимаю это неправильно, или MSSQL 2008 это нормально проглотит?
Если это ненормально, то как в этом запросе разные типы сравнить?
 
 
   sash-ml
 
1 - 22.09.16 - 14:02
нормально
   HardBall
 
2 - 22.09.16 - 14:14
(0) MSDN говорит, что будет неявное преобразование типов.
Индекс ed.KeyValues не будет использоваться если он там есть.
Желательно явно преобразовывать int в  nvarchar.
   arsik
 
3 - 22.09.16 - 14:30
(1) Спасибо
(2) Если я сделаю так, то нормально будет

//То есть наоборот ed.KeyValues к int приведу
JOIN ExchangeData ed ON (ed.KeyFields = 'ID' AND CAST(ed.KeyValues AS int) = u.ID AND ed.TableName = 'Units')
   HardBall
 
4 - 22.09.16 - 15:17
(3) Там походу маленькая таблица. Даже если типы данных не согласованы ничего страшного не будет.
   arsik
 
5 - 22.09.16 - 15:28
(4) Спасибо

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует