2010-11-30 71 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不能按预期工作的一个更具体的例子。