sql >> Database >  >> RDS >> Sqlserver

Betere oplossing nodig om speciale tekens en cijfers te verwijderen

U kunt uw functie vereenvoudigen tot één WHILE-lus:

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

Een CLR functie zou sneller kunnen zijn dan de pure T-SQL-implementatie.

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



  1. nachtwacht aangepaste opdracht terugbellen

  2. Hoe alleen de datumwaarde uit het datumveld in Oracle te extraheren?

  3. Gematerialiseerde weergave creëren die elke 5 minuten wordt vernieuwd

  4. Selecteer met twee tellingen in dezelfde kolom