我如何从SQL Server中的变量中删除所有NewLine?
我使用的是SQL Server 2008 R2。
我需要在T-Sql命令中删除变量中的所有NewLine。
例如:
Declare @A NVarChar(500)
Set @A = ' 12345
25487
154814 '
Print @A
它打印得像这样
12345
25487
154814
但我想得到像这样的字符串
12345 25487 154814
我写这个查询但不起作用:
Set @A = Replace(@A,CHAR(13),' ')
答案 0 :(得分:27)
您必须使用此查询
Declare @A NVarChar(500);
Set @A = N' 12345
25487
154814 ';
Set @A = Replace(@A,CHAR(13)+CHAR(10),' ');
Print @A;
答案 1 :(得分:3)
如果您希望它看起来与示例输出完全相同,请使用this hack:
DECLARE @A nvarchar(500)
SET @A = ' 12345
25487
154814 '
SET @A =
replace(
replace(
replace(
replace(@A, char(13)+char(10),' '),
' ','<>'),
'><','')
,'<>',' ')
PRINT @A
它将首先替换你的换行符,然后用一个替换你的连续空格。请注意,对输入字符串进行url编码是明智的,以避免令人讨厌的意外。
答案 2 :(得分:1)
Replace(@A,CHAR(13)+CHAR(10),' ')
并没有为我删除所有空格。
我代替了
replace(replace(@A, char(13),N' '),char(10),N' ')
这很好!
答案 3 :(得分:0)
使用<>
进行黑客攻击是很好的方法,但是如果文本中已经存在<>
(例如HTML),则可能无法正常工作。
最好改用char(13)
和char(10)
。首先,将char(13)
替换为char(13)+char(10)
,将char(10)
替换为char(13)+char(10)
,并将' '
替换为char(13)+char(10)
,以解决两者都不存在的问题。
然后,将char(10)+char(13)
替换为''
,最后将char(13)+char(10)
替换为空格。