当表达式中有不同的数据类型并且 SQL Server 根据 数据类型优先 规则自动转换它们时,就会出现隐式转换。
例如 nvarchar 的优先级高于 varchar
CREATE TABLE Demo
(
X varchar(50) PRIMARY KEY
)
/*Explicit*/
SELECT *
FROM Demo
WHERE CAST(X AS NVARCHAR(50)) = N'Foo'
/*Implicit*/
SELECT *
FROM Demo
WHERE X = N'Foo' /*<-- The N prefix means nvarchar*/
当您在查询中明确使用
CONVERT
或CAST
关键字时,会发生显式转换。当表达式中有不同的数据类型并且 SQL Server 根据 数据类型优先 规则自动转换它们时,就会出现隐式转换。
例如 nvarchar 的优先级高于 varchar
第二个执行计划显示了一个谓词
在这种情况下,显式和隐式转换都阻止了索引查找。