Transact-SQL中的整数数据类型和字符串之间的隐式转换

时间:2014-02-05 11:02:29

标签: sql tsql

在处理错误时,我注意到SQL Server 2000在整数数据类型和字符串之间执行隐式转换,即使没有警告也是如此。因此,以下查询:

SELECT LEFT(123456789, '3')

返回字符串123

这是SQL Server 2000中的错误(功能)吗? T-SQL的一个特性?或者SQL本身的一个特性?

1 个答案:

答案 0 :(得分:5)

docs for LEFT

  

一个character_expression

     

是字符或表达的表达   二进制数据。 character_expression可以是常量,变量或   柱。 character_expression可以是任何数据类型,文本或   ntext,可以隐式转换为varchar或nvarchar 。   否则,使用CAST函数显式转换   一个character_expression。

     

integer_expression

     

是指定的正整数   将返回character_expression的多少个字符。

文档的Data Type Conversion页面清楚地显示了哪些对类型可以隐式转换。 intvarchar之间的转化隐含在两个方向上。

所以我们说的是功能,而不是bug;而且我会说T-SQL而不是SQL,因为我猜这个标准并没有谈论这些事情。但这只是猜测。