sql-server - Where子句中Int和Varchar(SQL Server)的区别?

标签 sql-server where-clause types

当 AID 是 SQL Server 中的 INT 类型时,AID = 10AID = '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/

相关文章:

c# - 使用日期搜索时出错

c# - 当你只知道通用基类的类型时,如何找到通用基类的派生类?

c++ - C++ 中软件版本的正确数据类型是什么?

sql - 在 SQL select 语句中同时使用逗号分隔的表列表时,如何执行联接?

sql-server - 使用 Sqlite In Memory DB 进行单元测试 MSSQL-DB

mysql - 尝试恢复大于 10 GB 的 sql 转储文件

mysql - 按 ID 从 2 个表中选择 SQL WHERE 子句

julia - `where` 大括号内外关键字的区别

firebase - 如果文档不存在,则 Flutter Firebase

haskell - 表达无限种