2012-04-10 52 views

回答

17

您可以使用SQL Server的char(n)和函數來匹配您的WHERE子句中的字段內容。

 
carriage return: char(13) 
line feed:  char(10) 

下面的SQL會發現在some_table其中some_field值中包含換行和/或回車字符的所有行:

SELECT * FROM some_table 
WHERE CONTAINS(some_field, char(13)) OR CONTAINS(some_field, char(10)) 

要刪除您some_field值回車,你可以使用replace()功能與char()和長。 SQL將如下所示:

UPDATE some_table 
SET some_field = REPLACE(some_field, char(13), '') 
WHERE CONTAINS(some_field, char(13)) 

要刪除新行,可以使用該更新的char(10)版本跟蹤最後一條語句。你如何做這一切取決於你的文本包含哪些類型的換行符。但是,根據新行插入/粘貼文本的位置可能是\ r \ n或\ n,因此針對\ r和\ n字符運行更新會比假設您獲得一個新行版本更安全,或者另一個。

請注意,如果換行符被刪除並且您想保留它們,那麼您必須在輸入點修復問題。您無法替換或修復已刪除的內容,因此應將原始文本數據保存在保留原始未修改文本的新列中。

+2

'SSMS'在嘗試運行'UPDATE'腳本時給我一個錯誤''char'.'附近的語法錯誤,最後一個'char(13)'帶有下劃線。將鼠標懸停在擺輪上,它說''char'附近的語法不正確。期望STRING,TEXT_LEX或VARIABLE' – whytheq 2014-10-01 16:16:40

+0

@whytheq:您在評論部分提問。我知道它與/基於我的答案有關,但很難猜測發生了什麼,而沒有看到您正在使用的實際查詢以及您正在運行的表結構。請發佈問題。謝謝。 – 2014-10-01 18:01:38

+0

道歉:我創建了一個問題,並得到了答案:http://stackoverflow.com/questions/26145996/contains-unhappy-with-char13 – whytheq 2014-10-01 18:33:47

3

看看Char函數。見MSDN。這將有助於查找特殊字符。

4

增加別人的話;當我需要在T-SQL中嵌入換行符時,我傾向於這樣做;

DECLARE @nl CHAR(2) = CHAR(13) + CHAR(10); 

..然後根據需要使用@nl。這對於Windows行結束來說當然是。

+5

(我叫我@ CRLF') – 2012-04-10 15:56:08

相關問題