我有一个nvarchar(2000)
列,可以存储下面的长文本
文本末尾有很多空白行。有没有办法删除这些空白行(char(10)
)?
不接受使用replace(column,char(10),'')
。我不想弄乱上面的内容。如何仅在文本末尾删除这些char(10)?
我正在使用SQL Server 2012。
非常感谢!!!
答案 0 :(得分:2)
您可以用空字符串替换CHAR(10)+CHAR(13)
:
declare @text nvarchar(max) =
'first row
second row
third row
'
print '--Before--'
print @text
print '--End'
select @text = REPLACE(@text,CHAR(10)+CHAR(13),'') --10 and 13, not 13 and 10!
print '--After'
print @text
print '--End'
会给你:
--Before--
first row
second row
third row
--End
--After
first row
second row
third row
--End
在Before
部分中有3个空行
修改强>
如果每个空行都有一个空格,那么在REPLACE语句中更改字符并添加RTRIM以切断剩余空格:
select @text = RTRIM(REPLACE(@text,CHAR(32)+CHAR(13)+CHAR(10),''))
答案 1 :(得分:2)
Declare @String nvarchar(2000) = 'Row 1 with some text
Row 2 with some other text
'
Select reverse(substring(Reverse(@String),patindex('%[0-z]%',Reverse(@String)),2000))+char(13)+char(10)
返回
Row 1 with some text
Row 2 with some other text
答案 2 :(得分:1)
感谢gofr1的样本数据。此方法仅删除裁缝线。经过测试,它在SSMS中非常完美。 :)
declare @text nvarchar(max) =
'first row
second row
third row
'
print '--Before--'
print @text
print '--End'
--It will delete only the tailor lines.
set @text = reverse(stuff(reverse(@text),1,patindex('%'+char(13)+'[^'+char(10)+']%',reverse(@text)),''))
print '--After'
print @text
print '--End'
<强>结果强>
答案 3 :(得分:0)
使用RTRIM和LTRIM对于SQL中的选择查询 例如
选择RTRIM(LTRIM('j'))AS Column1
或者如果您想在Web表单上使用trim。您可以使用Str.Trim();
使用数据绑定事件写入字符串