Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Нуждаете се от по-добро решение за премахване на специални знаци и числа

Можете да опростите функцията си до един 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 функция може да бъде по-бърза от чистата реализация на 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. Файловете FILESTREAM остават след изтриването на реда

  2. Референтен псевдоним (изчислен в SELECT) в клаузата WHERE

  3. Как мога да съкратя дата и час в SQL Server?

  4. Възможно ли е да се зададе схема по подразбиране от низ за връзка?

  5. Списък с типове данни в SQL Server 2017