当 AID 是 SQL Server 中的 INT
类型时,AID = 10
或 AID = '10'
之间有什么区别?
Select *
from ATable
where AID = '10'
和
Select *
from ATable
where AID = 10
最佳答案
不同之处在于,SQL 需要进行转换才能将 varchar
常量与您的列类型进行比较。
如果您显示第一个查询的执行计划,您将看到如下内容:
CONVERT_IMPLICIT(int, [@1], 0)
编辑
在上面的例子中,常量的转换只会对性能产生很小的影响。但是,如果转换是在列(而不是常量)上完成的,这可能会导致扫描,从而产生更严重的后果。
根据 Remus 的回答,您可以检查转换的优先顺序 here
关于sql-server - Where子句中Int和Varchar(SQL Server)的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360464/