Cách tốt nhất để đạt được điều này rất đơn giản và hiệu quả:
SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI
kết quả đầu ra là 'aeeohello!'
Chuỗi không được là unicode. Nếu bạn có nvarchar, chỉ cần truyền nó sang varchar trước khi sử dụng đối chiếu.
Đây là một chức năng đáp ứng nhu cầu của OP:
create function [dbo].[RemoveExtraChars] ( @p_OriginalString varchar(50) )
returns varchar(50) as
begin
declare @i int = 1; -- must start from 1, as SubString is 1-based
declare @OriginalString varchar(100) = @p_OriginalString Collate SQL_Latin1_General_CP1253_CI_AI;
declare @ModifiedString varchar(100) = '';
while @i <= Len(@OriginalString)
begin
if SubString(@OriginalString, @i, 1) like '[a-Z]'
begin
set @ModifiedString = @ModifiedString + SubString(@OriginalString, @i, 1);
end
set @i = @i + 1;
end
return @ModifiedString
end
Sau đó, lệnh:
select dbo.RemoveExtraChars('aèàç=.32s df')
kết quả đầu ra
aeacsdf