2010-11-30 80 views
1

我有一些數據存儲在包含控制字符CR & LF(CHAR(10)& CHAR(13))的VARCHAR(MAX)列中。計算子串時包括回車符

我有一些開始和結束的位置數字,我需要用來從文本中提取一個子字符串 - 但是當我使用SUBSTRING時,這些控制字符被忽略,導致子字符串被錯誤提取。

我用CTE寫了一個查詢,用另一個字符(¬¬)替換了CRLF的所有實例,然後子字符串正常工作 - 但是我需要在文本中保留CRLFs,因爲它們用於顯示目的。

任何人都可以想到一種方法,我可以讓SUBSTRING函數包含控制字符,當它計算字符串的哪個部分提取?

+0

你能告訴我們你使用`SUBSTRING`的非工作代碼嗎? – Gabe 2010-11-30 18:43:18

回答

2

substring的SQL Server版本將CRLF視爲其他字符。例如:

select substring('123' + char(10) + char(13) + '678',1,3) 
--> 
123 

select substring('123' + char(10) + char(13) + '678',4,2) 
--> 
\r\n 

select substring('123' + char(10) + char(13) + '678',6,3) 
--> 
678 

再次檢查你的代碼,或張貼在哪裏substring不能按預期工作的一個更具體的例子。