Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Precisa de uma solução melhor para remover caracteres especiais e números


Você pode simplificar sua função para um loop WHILE:
DECLARE @String NVARCHAR(MAX) = '231323Lig%$%$h$%t'
DECLARE @Expression NVARCHAR(32) = '%[^A-Z]%'

WHILE PATINDEX(@Expression, @String) > 0
    SET @String = STUFF(@String, PATINDEX(@Expression, @String), 1, '')

RETURN @String

Um CLR função poderia ser mais rápida do que a implementação T-SQL pura.
Regex.Replace(str, "[^a-zA-Z]+", "", RegexOptions.Compiled)