Обновление строковых столбцов без использования одинарных кавычек - общий вопрос - PullRequest
1 голос
/ 30 мая 2010
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 Ответ

2 голосов
/ 30 мая 2010

SQL Server будет CAST или CONVERT значение, которое вы передаете, когда вы указываете значение, которое не соответствует ожидаемому вами типу.

т.е. Пытаться: SELECT * FROM CustomerPhone WHERE PhoneTypeID = '7'

Здесь SQL Server возьмет вашу строку '7' и попытается преобразовать ее в соответствующий тип int, smallint, tinyint (независимо от того, что подходит).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...