Я предлагаю 2 решения
Решение 1. Составьте таблицу шумов и замените шумы пробелами
, например
DECLARE @String VARCHAR(MAX)
DECLARE @Noise TABLE(Noise VARCHAR(100),ReplaceChars VARCHAR(10))
SET @String = 'hello! how * > are % u (: . I am ok :). Oh nice!'
INSERT INTO @Noise(Noise,ReplaceChars)
SELECT '!',SPACE(1) UNION ALL SELECT '@',SPACE(1) UNION ALL
SELECT '#',SPACE(1) UNION ALL SELECT '$',SPACE(1) UNION ALL
SELECT '%',SPACE(1) UNION ALL SELECT '^',SPACE(1) UNION ALL
SELECT '&',SPACE(1) UNION ALL SELECT '*',SPACE(1) UNION ALL
SELECT '(',SPACE(1) UNION ALL SELECT ')',SPACE(1) UNION ALL
SELECT '{',SPACE(1) UNION ALL SELECT '}',SPACE(1) UNION ALL
SELECT '<',SPACE(1) UNION ALL SELECT '>',SPACE(1) UNION ALL
SELECT ':',SPACE(1)
SELECT @String = REPLACE(@String, Noise, ReplaceChars) FROM @Noise
SELECT @String Data
Решение 2: С таблицей чисел
DECLARE @String VARCHAR(MAX)
SET @String = 'hello! & how * > are % u (: . I am ok :). Oh nice!'
;with numbercte as
(
select 1 as rn
union all
select rn+1 from numbercte where rn<LEN(@String)
)
select REPLACE(FilteredData,' ',SPACE(1)) Data from
(select SUBSTRING(@String,rn,1)
from numbercte
where SUBSTRING(@String,rn,1) not in('!','*','>','<','%','(',')',':','!','&','@','#','$')
for xml path(''))X(FilteredData)
Вывод (в обоих случаях)
Данные
hello how are u . I am ok . Oh nice
Примечание. Я только что добавил несколько шумов. Вам может понадобиться поставить нужные вам шумы.
Надеюсь, это поможет