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

Номер телефона имеет тип varchar (20), тогда как PhoneTypeID и CustomerID имеют тип int. Я использую вышеуказанный оператор в SQL Server, он работает нормально.Обновление столбцов строки без использования отдельных котировок - общий вопрос

Интересно, как это работает? Я думал, что любое строковое значение должно быть помещено между «...»

+0

Попробуйте поместить в столбец PhoneNumber текст типа «asdasd». Он все еще работает? – hgulyan

+1

@peace: какое значение фактически было вставлено .... строковое значение '9-1-1' или' 7'? Я бы ожидал '7'. –

+0

Строковое значение 9-1-1 – peace

ответ

2

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

т.е. Попробуйте: SELECT * FROM CustomerPhone WHERE PhoneTypeID = '7'

Здесь SQL Server будет взять строку '7' и попытаться преобразовать в соответствующий тип INT, SMALLINT, TINYINT (независимо от необходимости).

+0

SELECT * FROM CustomerPhone WHERE PhoneTypeID = '7' Работал нормально! – peace