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

新手上路,请多包涵

SQL Server 中的隐式转换和显式转换有什么区别?

原文由 Vignesh Kumar A 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 549
1 个回答

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

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

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

原文由 Martin Smith 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进