在处理错误时,我注意到SQL Server 2000在整数数据类型和字符串之间执行隐式转换,即使没有警告也是如此。因此,以下查询:
SELECT LEFT(123456789, '3')
返回字符串123
。
这是SQL Server 2000中的错误(功能)吗? T-SQL的一个特性?或者SQL本身的一个特性?
答案 0 :(得分:5)
一个character_expression
是字符或表达的表达 二进制数据。 character_expression可以是常量,变量或 柱。 character_expression可以是任何数据类型,文本或 ntext,可以隐式转换为varchar或nvarchar 。 否则,使用CAST函数显式转换 一个character_expression。
integer_expression
是指定的正整数 将返回character_expression的多少个字符。
文档的Data Type Conversion页面清楚地显示了哪些对类型可以隐式转换。 int
和varchar
之间的转化隐含在两个方向上。
所以我们说的是功能,而不是bug;而且我会说T-SQL而不是SQL,因为我猜这个标准并没有谈论这些事情。但这只是猜测。