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

4

我有一个nvarchar(2000)列,可能存储如下所示的长文本:

text后的空白行

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

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

我正在使用SQL Server 2012。

非常感谢!!!


1
你能将图片粘贴为文本吗? - TheGameiswar
4个回答

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
您可以将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),''))

很棒的逻辑开关!但是它会删除文本主体中的空行,而不仅仅是尾随的空行。 - John Cappelletti
@JohnCappelletti 是的,他们会。如果 OP 需要在正文中使用空白行 - 他将不会使用这个 :) - gofr1
@JoeGuan 是的,我已经测试过了,否则我的答案中就不会有输出。您使用的 SQL Server 版本是什么?还有,您遇到了什么错误? - gofr1
请添加实际数据而不是屏幕截图中的数据,空行可能存在空格,解决方案可能会有所不同。 - gofr1
非常乐意!如果任何答案对您有帮助,请随意接受/点赞它们! - gofr1
显示剩余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'

Result

enter image description here


0
使用RTRIM和LTRIM来进行SQL中的选择查询。例如:
选择 RTRIM ( LTRIM ( ' j ')) AS Column1
或者,如果你想在网页表单上使用trim,你可以在databound事件中使用Str.Trim()来写入字符串。

TRIM函数不适用于char(10)和char(13),它只适用于空格。 - Joe Guan
对于 SQL Server,使用 RTRIM 和 LTRIM 函数来去除空格。或者您也可以使用 REPLACE 方法。另一种方法是将 CHAR 类型转换为 STRING 类型,然后应用 TRIM 函数。 - Shyam Sa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接