gpt4 book ai didi

sql-server - SQL Server 2005 - 比较 char 列与 int

转载 作者:行者123 更新时间:2023-12-03 03:05:49 25 4
gpt4 key购买 nike

我遇到了一个有趣的存储过程,我需要你的帮助来解决这个问题。

基本上,存储过程 SELECTWHERE条件,其中条件是:

WHERE SomeType = 2

SomeTypechar(3)列,其中包含类似 '1','2','AA','AB' 的值等等

当我在 SSMS 中运行存储过程时,它失败并显示:

Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value 'AA' to a column of data type int.

但是,当我通过生产中的应用程序使用该存储过程时,它会毫无问题地返回数据。

我的问题是,这怎么可能?

最佳答案

您在评论中说您还有其他 WHERE 子句未显示。

问题可能是不同的执行计划。例如假设您的真实 WHERE 条件是

WHERE SomeType = 2 AND Foo = 'X'

您的数据是

SomeType Foo
-------- ----
1 X
2 X
AA Y
AB Y

然后在一个实例中,它可能会评估 Foo = 'X' 首先留下行

SomeType Foo
-------- ----
1 X
2 X

然后,它对这些已过滤的行运行 IMPLICIT_CAST(SomeType AS INT) = 2 条件,没有任何问题。

但是,如果顺序相反,首先评估 SomeType = 2 条件,则需要转换值 AAAB > 为 int ,查询将失败。

关于sql-server - SQL Server 2005 - 比较 char 列与 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10204351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com