这里正在发生一些非常奇怪的事情。
我有一个看起来像这样的查询。
SELECT CAST(FT.DOP AS SMALLINT) FROM TRACKING_DATA WHERE date > @mydate and identifier = 0000000000
Run Code Online (Sandbox Code Playgroud)
当作为原始查询运行时,它返回数据就好了。
当我把它放在一个改变 where 子句的存储过程中时,它会抛出这个错误。
Msg 244, Level 16, State 2, Procedure myprocedure, Line 107 [Batch Start Line 2]
The conversion of the varchar value '58629' overflowed an INT2 column. Use a larger integer column.
Run Code Online (Sandbox Code Playgroud)
所以这就是奇怪的地方。我用这样的查询遍历了那个 where 子句的所有可能数据。
SELECT DISTINCT DOP FROM TRACKING_DATA where identifier = 000000000000
Run Code Online (Sandbox Code Playgroud)
和
SELECT DISTINCT CAST(DOP AS smallint) FROM TRACKING_DATA where identifier = 000000000000
Run Code Online (Sandbox Code Playgroud)
这就是我得到的回报。
17
12
9
19
8 …Run Code Online (Sandbox Code Playgroud)