Vig*_*r A 1 sql sql-server implicit-conversion
你能告诉我SQL Server中的隐式转换和显式转换之间的区别吗?
我用谷歌搜索了这个,但我无法得到它.
Mar*_*ith 10
在查询中明确使用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]
在这种情况下,显式和隐式转换都会阻止索引搜索.