Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Benötigen Sie eine bessere Lösung, um Sonderzeichen und Zahlen zu entfernen

Sie können Ihre Funktion zu einer WHILE-Schleife vereinfachen:

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

Ein CLR Funktion könnte schneller sein als die reine T-SQL-Implementierung.

Regex.Replace(str, "[^a-zA-Z]+", "", RegexOptions.Compiled)