您能告诉我SQL Server中隐式转换和显式转换之间的区别吗?
我已经用谷歌搜索过,但是我听不懂。
当您在查询中显式使用CONVERTorCAST关键字时,就会发生显式转换。
CONVERT
CAST
当表达式中的数据类型不同时,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_IMPLICIT(nvarchar(50),[D].[dbo].[Demo].[X],0)=[@1]
在这种情况下,显式转换和隐式转换都将阻止索引查找。