Как выполнить запрос замены только в конце строки, где присутствует скрытый CRLF? Нечто подобное, но только в конце строки не где-нибудь в пределах строкиСинтаксис T-SQL для удаления CR LF только в END текстовой строки
declare @NewLine char(2)
set @NewLine=char(13)+char(10)
update tableName
set columnName =Replace(columnName , @NewLine,'')
where (RIGHT(columnName ,2)[email protected])
Некоторые строки имеют несколько абзацев, поэтому CR ЛФ в порядке, просто не в конце строки текста.
Приведенный выше код по-прежнему заменяет CR LF по всей строке.
SQL Server 2008 R2 Экспресс
UPDATE: Самое недавнее тестирование предложенных ответов показал, что в SSMS в CRLFs по всей видимости, остаются в середине строки, но после копирования содержимого в Excel и запуск Сравнение ACSII по каждому символу не содержит CRLF, которые, по-видимому, были преобразованы в пробелы. Я тестировал этот код и экспортировал результаты в текстовый файл и 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)[email protected])
select len(t),t from #t
drop table #t
Я, вероятно, что-то делаю неправильно, но не знаю, что еще попробовать в этой точке.
Я не думаю, что SQL - это лучшее, что можно сделать, но если вы упорствуете, вы можете попробовать SUBSTRING в сочетании с LEN. –
Я изучал этот вариант. Тем не менее, я все еще ничего не работаю. – htm11h