我有一個列TypeCode varchar(20),其值爲'1','2','3','FOO','BAR'。我需要找到小於參數值的最大整數。事情是這樣的:阻止SQL Server中的查詢重寫
select max(TypeCode) TypeCode
from table1 a
left join table2 b on b.table1id = a.id
and b.TypeCode not in ('FOO', 'BAR')
where b.TypeCode < @MaxType
其中一期工程的大部分時間,但在某些查詢的SQL Server決定(根據查詢計劃),將其轉換爲這樣的事情。
select max(TypeCode) TypeCode
from table1 a
left join table2 b on b.table1id = a.id
and b.TypeCode < @MaxType
and b.TypeCode not in ('FOO', 'BAR')
該查詢顯然產生以下錯誤:
Conversion failed when converting the varchar value 'FOO' to data type int.
我想沒有「富」和「酒吧」價值創造表2的視圖,並加入視圖代替,但查詢計劃仍一樣。
您是否知道阻止優化器更改查詢的方法? PS:我知道表格的設計並不是最好的,但這是一個遺留數據庫,我無法改變它。