如何删除字符串列上的空格

时间:2016-08-09 10:06:11

标签: sql-server string tsql replace sql-server-2012

我有一个nvarchar(2000)列,可以存储下面的长文本

blank rows after text

文本末尾有很多空白行。有没有办法删除这些空白行(char(10))?

不接受使用replace(column,char(10),'')。我不想弄乱上面的内容。如何仅在文本末尾删除这些char(10)?

我正在使用SQL Server 2012。

非常感谢!!!

4 个答案:

答案 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'

<强>结果

enter image description here

答案 3 :(得分:0)

使用RTRIM和LTRIM对于SQL中的选择查询 例如

选择RTRIM(LTRIM('j'))AS Column1

或者如果您想在Web表单上使用trim。您可以使用Str.Trim();

使用数据绑定事件写入字符串