Помимо того, что у меня есть куча вложенных операторов REPLACE, это лучшее, что я могу придумать.
У нас есть многоязычное требование, поэтому возвращение буквенно-цифровых символов не работает для таких языков, как арабский
DECLARE
@OrgString nVarchar(max),
@Pattern nvarchar(max)
SET @OrgString = N'~,`,!,@,#,$,%,^,&,*,(,),0-9,_,-,+,=,[,],{,},;,:,",<,>,?,/,\,|حساب "خارج الميز1$انية"'
SET @Pattern = '%[~,`,!,@,#,$,%,^,&,*,(,),0-9,_,''-,+,=,[,{,},;,:,",<,>,?,/,\,|]%'
WHILE PATINDEX( @Pattern, @OrgString ) > 0
SET @OrgString = REPLACE( @OrgString, SUBSTRING( @OrgString, PATINDEX( @Pattern, @OrgString ), 1 ), '')
SELECT REPLACE(@OrgString, ']', '') -- Cant workout how to put ] in @Pattern