SQL Server 2012 Random string from a list
You can do this with the following trick:
update c set name=ca.name
from contacts c
outer apply(select top 1 name
from (values('bill'),('steve'),('jack')) n(name)
where c.id = c.id order by newid())ca;
c.id = c.id
is just a dummy predicate that forces sql engine to call subquery for each outer row. Here is the fiddle http://sqlfiddle.com/#!6/8ecca/22
Here's some love using choose
with cte as (
select *, (ABS(CHECKSUM(NewId())) % 3) + 1 as n
from contacts
where city = 'NY'
)
update cte
set firstname = choose(n, 'Bill','Steve','Jack')