我有一些数据存储在VARCHAR(MAX)
列中,其中包含控制字符CR& LF(CHAR(10)& CHAR(13))。
我有一些开始和结束位置编号,我需要用它来从文本中提取子字符串 - 但是当我使用SUBSTRING时,这些控制字符会被忽略,这会导致子字符串被错误地提取。
我使用CTE编写了一个查询,用另一个字符(¬¬)替换了CRLF的所有实例,然后子字符串正常工作 - 但是我需要在文本中保留CRLF,因为它们用于显示目的。
任何人都可以想到一种方法,我可以让SUBSTRING函数在计算要提取的字符串部分时包含控制字符吗?
答案 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
无效的地方。