Dưới đây là một ví dụ bạn có thể chạy:
tôi quyết định đúc kết quả như một giá trị Xml
, vì vậy khi bạn click vào nó, bạn sẽ có thể xem Carriage Returns.
DECLARE @CRLF Char(2) = (CHAR(0x0D) + CHAR(0x0A))
DECLARE @String VarChar(MAX) = @CRLF + @CRLF + ' Hello' + @CRLF + 'World ' + @CRLF + @CRLF
--Unmodified String:
SELECT CAST(@String as Xml)[Unmodified]
--Remove Trailing Whitespace (including Spaces).
SELECT CAST(LEFT(@String, LEN(REPLACE(@String, @CRLF, ' '))) as Xml)[RemoveTrailingWhitespace]
--Remove Leading Whitespace (including Spaces).
SELECT CAST(RIGHT(@String, LEN(REVERSE(REPLACE(@String, @CRLF, ' ')))) as Xml)[RemoveLeadingWhitespace]
--Remove Leading & Trailing Whitespace (including Spaces).
SELECT CAST(SUBSTRING(@String, LEN(REPLACE(@String, ' ', '_')) - LEN(REVERSE(REPLACE(@String, @CRLF, ' '))) + 1, LEN(LTRIM(RTRIM(REPLACE(@String, @CRLF, ' '))))) as Xml)[RemoveAllWhitespace]
--Remove Only Leading and Trailing CR/LF's (while still preserving all other Whitespace - including Spaces). - 04/06/2016 - MCR.
SELECT CAST(SUBSTRING(@String, PATINDEX('%[^'+CHAR(13)+CHAR(10)+']%',@String), LEN(REPLACE(@String, ' ', '_')) - PATINDEX('%[^'+CHAR(13)+CHAR(10)+']%',@String) + 1 - PATINDEX('%[^'+CHAR(13)+CHAR(10)+']%', REVERSE(@String)) + 1) as Xml)[RemoveLeadingAndTrailingCRLFsOnly]
Hãy nhớ loại bỏ Cast-to-Xml, vì điều này được thực hiện giống như một Proof-of-Concept để hiển thị nó hoạt động.
Làm cách nào tốt hơn câu trả lời được chấp nhận hiện tại?
Thoạt nhìn, điều này có thể xuất hiện để sử dụng nhiều Chức năng hơn Câu trả lời được chấp nhận.
Tuy nhiên, đây không phải là trường hợp.
Nếu bạn kết hợp cả hai phương pháp được liệt kê trong trả lời được chấp nhận (để loại bỏ cả Trailing và Khoảng trắng ở đầu), bạn sẽ có thể sở để thực hiện hai đường chuyền cập nhật Ghi, hoặc bản sao tất cả của một logic vào khác (ở khắp mọi nơi @String
được liệt kê), điều này sẽ gây ra nhiều cuộc gọi chức năng hơn và trở nên khó đọc hơn.
Điều này là tốt, nhưng không thành công nếu chuỗi chỉ chứa các ký tự CRLF. PATINDEX trả về 0 trong trường hợp này, vì vậy toàn bộ chuỗi được trả về. – Dave