不使用单引号更新字符串列 - 一般问题

时间:2010-05-30 12:26:42

标签: sql-server database tsql dml

UPDATE CustomerPhone 
SET PhoneTypeID = 7, PhoneNumber = 999-444
WHERE CustomerID = 500 AND PhoneNumber = 9-1-1;

PhoneNumber的类型为varchar(20),而PhoneTypeID和CustomerID的类型为int。我在SQL Server中运行上面的语句,它工作正常。

我想知道它是如何运作的?我认为任何字符串值都必须放在'...'

之间

1 个答案:

答案 0 :(得分:2)

当您指定的值不是您期望的类型时,SQL Server将CASTCONVERT传递给它的值。

即。尝试:       SELECT * FROM CustomerPhone WHERE PhoneTypeID = '7'

此处SQL Server将使用您的字符串'7'并尝试转换为适当类型的int,smallint,tinyint(适当的)。