小编典典

SQL Server中的隐式转换和显式转换之间的区别

sql

您能告诉我SQL Server中隐式转换和显式转换之间的区别吗?

我已经用谷歌搜索过,但是我听不懂。


阅读 188

收藏
2021-04-22

共1个答案

小编典典

当您在查询中显式使用CONVERTorCAST关键字时,就会发生显式转换。

当表达式中的数据类型不同时,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]

在这种情况下,显式转换和隐式转换都将阻止索引查找。

2021-04-22