计算子字符串时包含回车符

时间:2010-11-30 18:39:41

标签: sql-server tsql sql-server-2008

我有一些数据存储在VARCHAR(MAX)列中,其中包含控制字符CR& LF(CHAR(10)& CHAR(13))。

我有一些开始和结束位置编号,我需要用它来从文本中提取子字符串 - 但是当我使用SUBSTRING时,这些控制字符会被忽略,这会导致子字符串被错误地提取。

我使用CTE编写了一个查询,用另一个字符(¬¬)替换了CRLF的所有实例,然后子字符串正常工作 - 但是我需要在文本中保留CRLF,因为它们用于显示目的。

任何人都可以想到一种方法,我可以让SUBSTRING函数在计算要提取的字符串部分时包含控制字符吗?

1 个答案:

答案 0 :(得分: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无效的地方。