如何仅在存在隐藏 CRLF 的字符串末尾执行替换查询?像这样的东西,但只在字符串的末尾而不是字符串中的任何地方
declare @NewLine char(2)
set @NewLine=char(13)+char(10)
update tableName
set columnName =Replace(columnName , @NewLine,'')
where ( RIGHT(columnName ,2)=@NewLine)
有些字符串有多个段落,所以 CR LF 没问题,只是不在文本字符串的末尾。
上面的代码仍然在整个字符串中替换了 CR LF。
SQL Server 2008 R2 速成版
更新: 我最近对建议答案的测试表明,在 SSMS 中,CRLF 似乎保留在中间字符串中,但是在将内容复制到 Excel 并对每个字符运行 ACSII 比较之后,它们似乎没有被转换为空格。我一直在使用此代码进行测试,并将结果导出到文本文件和 CSV。
create table #t(t varchar(400))
insert into #t values('abc'+char(13)+char(10)+'xyz'+char(13)+char(10))
insert into #t values('rrrrr'+char(13)+char(10)+'sssss'+char(13)+char(10))
insert into #t values('Sentence1
Sentence2!
Sentence3
')
insert into #t values('rrrrr'+char(13)+char(10))
insert into #t values('Sentence111
Sentence222
')
insert into #t values('abc1234'+char(13)+char(10)+char(13)+char(10)+'xyz987'+char(13)+char(10)+char(13)+char(10)+'lmnop345'+char(13)+char(10))
declare @NewLine char(2)
set @NewLine=char(13)+char(10)
select len(t),t from #t
update #t
set t = STUFF(t, LEN(t)-1, 2,'')
where ( RIGHT(t ,2)=@NewLine)
select len(t),t from #t
drop table #t
我可能做错了什么,只是不确定此时还可以尝试什么。