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

Cách xóa các ký tự khoảng trắng khỏi một chuỗi trong SQL Server

Sử dụng ASCII(RIGHT(ProductAlternateKey, 1)) bạn có thể thấy rằng ký tự gần nhất bên phải trong hàng 2 là Nguồn cấp dòng hoặc Ký tự Ascii 10.

Điều này không thể được xóa bằng cách sử dụng LTrim tiêu chuẩn RTrim chức năng.

Tuy nhiên, bạn có thể sử dụng (REPLACE(ProductAlternateKey, CHAR(10), '')

Bạn cũng có thể muốn tính toán các dấu xuống dòng và các tab. Ba thứ này (Nguồn cấp dòng, dấu xuống dòng và tab) là thủ phạm thông thường và có thể được loại bỏ bằng cách sau:

LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(ProductAlternateKey, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')))

Nếu bạn gặp phải bất kỳ ký tự "khoảng trắng" nào khác mà không thể xóa bằng các ký tự trên, hãy thử một hoặc tất cả các ký tự bên dưới:

--NULL
Replace([YourString],CHAR(0),'');
--Horizontal Tab
Replace([YourString],CHAR(9),'');
--Line Feed
Replace([YourString],CHAR(10),'');
--Vertical Tab
Replace([YourString],CHAR(11),'');
--Form Feed
Replace([YourString],CHAR(12),'');
--Carriage Return
Replace([YourString],CHAR(13),'');
--Column Break
Replace([YourString],CHAR(14),'');
--Non-breaking space
Replace([YourString],CHAR(160),'');

Danh sách các ký tự khoảng trắng tiềm năng này có thể được sử dụng để tạo một hàm như:

Create Function [dbo].[CleanAndTrimString] 
(@MyString as varchar(Max))
Returns varchar(Max)
As
Begin
    --NULL
    Set @MyString = Replace(@MyString,CHAR(0),'');
    --Horizontal Tab
    Set @MyString = Replace(@MyString,CHAR(9),'');
    --Line Feed
    Set @MyString = Replace(@MyString,CHAR(10),'');
    --Vertical Tab
    Set @MyString = Replace(@MyString,CHAR(11),'');
    --Form Feed
    Set @MyString = Replace(@MyString,CHAR(12),'');
    --Carriage Return
    Set @MyString = Replace(@MyString,CHAR(13),'');
    --Column Break
    Set @MyString = Replace(@MyString,CHAR(14),'');
    --Non-breaking space
    Set @MyString = Replace(@MyString,CHAR(160),'');

    Set @MyString = LTRIM(RTRIM(@MyString));
    Return @MyString
End
Go

Sau đó, bạn có thể sử dụng như sau:

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. thuộc loại không hợp lệ để sử dụng làm cột khóa trong chỉ mục

  2. Định dạng nguồn SSIS Chuyển đổi ngầm định cho ngày giờ

  3. Php với SQL Server

  4. SQL Server 2008:Không thể Chèn cột mới ở vị trí giữa và thay đổi kiểu dữ liệu

  5. Tham gia 100 bảng