Имя: Пароль:
IT
Админ
Запрос к MS SQL. В условии разные типы. Как привести к одному?
0 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 это нормально проглотит?
Если это ненормально, то как в этом запросе разные типы сравнить?
1 sash-ml
 
22.09.16
14:02
нормально
2 HardBall
 
22.09.16
14:14
(0) MSDN говорит, что будет неявное преобразование типов.
Индекс ed.KeyValues не будет использоваться если он там есть.
Желательно явно преобразовывать int в  nvarchar.
3 arsik
 
гуру
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')
4 HardBall
 
22.09.16
15:17
(3) Там походу маленькая таблица. Даже если типы данных не согласованы ничего страшного не будет.
5 arsik
 
гуру
22.09.16
15:28
(4) Спасибо