Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Potrzebujesz lepszego rozwiązania, aby usunąć znaki specjalne i liczby

Możesz uprościć swoją funkcję do jednej pętli 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

CLR funkcja może być szybsza niż czysta implementacja T-SQL.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co SqlDbType mapuje na varBinary(max)?

  2. Rejestrowanie WSZYSTKICH zapytań w bazie danych SQL Server 2008 Express?

  3. Wybierz saldo bieżące z kolumn debetowych w tabeli

  4. Dlaczego [data] + ([godzina]-[przesunięcie]) nie jest deterministyczny w programie SQL Server 2008?

  5. Czy istnieje różnica w wydajności między CTE , podzapytaniem, tabelą tymczasową lub zmienną tabelową?