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

PhoneNumber は varchar(20) 型ですが、PhoneTypeID と CustomerID は int 型です。上記のステートメントを SQL Server で実行していますが、正常に動作します。

なぜ機能するのだろうか?文字列値は「...」の間に配置する必要があると思いました

4

1 に答える 1

2

SQL Server は、期待する型ではCASTないCONVERT値を指定すると、渡された値を使用します。

すなわち試してください: SELECT * FROM CustomerPhone WHERE PhoneTypeID = '7'

ここで、SQL Server は文字列を受け取り、'7'int、smallint、tinyint の適切な型 (適切なものは何でも) に変換しようとします。

于 2010-05-30T12:33:15.413 に答える