|
Запрос к 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) Спасибо
|
|