Головоломка от коллеги, которую я не могу понять ...
update btd.dbo.tblpayroll
set empname = ( select b.Legal_Name
from ( SELECT Legal_Name,
Employee_ID
FROM Com.dbo.Workers
WHERE isnumeric(Employee_ID) = 1
) b
where b.Employee_ID = empnum
and b.Legal_name is not NULL
)
where empname is NULL
Сообщение 245, Уровень 16, Состояние 1, Строка 1
Ошибка преобразования при преобразовании значения varchar 'N0007' в тип данных int. Псевдоним таблицы b фактически будет представлением.
Значение «N0007» находится в таблице «Рабочие». Я не понимаю, почему это не фильтруется из результатов, которые объединяются.
EDIT:
Псевдоним действительно возвращает правильные строки, поэтому isNumeric выполняет свою работу.