Tôi đề xuất 2 giải pháp
Giải pháp 1: Tạo một bảng tiếng ồn và thay thế tiếng ồn với các không gian trống
ví dụ
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
Giải pháp 2: Với một bảng số
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)
Output (Cả hai trường hợp)
liệu
hello how are u . I am ok . Oh nice
Lưu ý- Tôi vừa mới đặt một số tiếng ồn. Bạn có thể cần phải đặt các tiếng ồn mà bạn cần.
Hope this helps
@TimC: Cảm ơn rất nhiều Tôi thích giải pháp này và đã triển khai giải pháp này, nhưng đã nảy sinh một vấn đề. Khi tôi lấy dấu chấm câu, tôi dự định sử dụng nó trong một cột được tính toán được duy trì để tôi có thể tạo một Chỉ mục Toàn văn trên đó. Tuy nhiên tôi không thể tồn tại cột sử dụng phương pháp này. Ý tưởng nào? –