Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cần giải pháp tốt hơn để xóa các ký tự đặc biệt và số

Bạn có thể đơn giản hóa chức năng của mình thành một vòng lặp 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

Một CLR hàm có thể nhanh hơn triển khai T-SQL thuần túy.

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. So sánh phần thời gian bỏ qua DATETIME và DATE

  2. Lý do sử dụng @@ Identity thay vì scope_identity

  3. Đạt đến giới hạn tham số 2100 (SQL Server) khi sử dụng Chứa ()

  4. Không hiển thị bộ trả lại trống

  5. Làm thế nào để thực hiện một khóa hàng?