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