Vous pouvez le faire en une seule instruction. Vous n'êtes pas vraiment en train de créer une déclaration avec plus de 200 replaces, n'est-ce pas ? !
update tbl
set S = U.clean
from tbl
cross apply
(
select Substring(tbl.S,v.number,1)
-- this table will cater for strings up to length 2047
from master..spt_values v
where v.type='P' and v.number between 1 and len(tbl.S)
and Substring(tbl.S,v.number,1) like '[0-9]'
order by v.number
for xml path ('')
) U(clean)
Fonctionnement SQL Fiddle montrant cette requête avec des exemples de données
Répliqué ci-dessous pour la postérité :
create table tbl (ID int identity, S varchar(500))
insert tbl select 'asdlfj;390312hr9fasd9uhf012 3or h239ur ' + char(13) + 'asdfasf'
insert tbl select '123'
insert tbl select ''
insert tbl select null
insert tbl select '123 a 124'
Résultats
ID S
1 390312990123239
2 123
3 (null)
4 (null)
5 123124