Собственно конфигурация асторовская ВМС - работает с отдельной базой на 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 это нормально проглотит?
Если это ненормально, то как в этом запросе разные типы сравнить?
(0) MSDN говорит, что будет неявное преобразование типов.
Индекс ed.KeyValues не будет использоваться если он там есть.
Желательно явно преобразовывать int в nvarchar.
(1) Спасибо
(2) Если я сделаю так, то нормально будет
//То есть наоборот ed.KeyValues к int приведу
JOIN ExchangeData ed ON (ed.KeyFields = 'ID' AND CAST(ed.KeyValues AS int) = u.ID AND ed.TableName = 'Units')
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой