Простое использование функции замены SQL Server на Tom приведет к следующему:
Корректное
«что-то Том» становится «чем-то»
кен '
Некорректное
«Томс что-то» становится «кенс»
что-то '
Для такого рода замены строк (только замена тома на кен, а не томов на кенс) вам понадобится регулярное выражение.
SQL Server не поддерживает регулярные выражения на языке t-sql.
В SQL Server 2005 и выше вы можете интегрировать регулярные выражения с помощью интеграции clr, но я бы лично сказал, что это очень плохая идея. Для такого рода обновлений, вероятно, наиболее чистым является выполнение манипуляции со строками на более выразительном языке, а затем отправка обновлений после внесения изменений.
Глядя на данные вашего примера, есть один (хотя и рискованный) случай, когда вы можете достичь желаемого. Если строка tom равна всегда в конце, вы можете сделать обновление следующим образом:
update TableName
set ShipName = substring(ShipName, 0, len(ShipName) -3) + ' ken'
where ShipName like '% tom'
Это заменит все экземпляры тома в конце на кен.
Для части даты вашего вопроса вы можете сделать что-то вроде следующего:
Update TableName
set OrderDate = dateadd(year, 3, OrderDate)
where datepart(year, OrderDate) = 1996