使用SQL Server替换带空格的列中的换行符

时间:2016-06-06 20:49:31

标签: sql sql-server sql-server-2008

我有一个大型数据表,其中一些列包含换行符。我想删除它们并用一些空格替换它们。

有人能告诉我如何在SQL Server中执行此操作吗?

提前致谢

5 个答案:

答案 0 :(得分:1)

这应该有效,具体取决于换行符的编码方式:

update t
    set col = replace(col, '
', ' ')
    where col like '%
%';

也就是说,在SQL Server中,字符串可以包含换行符。

答案 1 :(得分:0)

@ Gordon的答案应该有效,但如果您不确定如何编码换行符,可以使用ascii函数返回字符值。例如:

declare @entry varchar(50) = 
'Before break
after break'

declare @max int = len(@entry)
; with CTE as (
    select 1 as id
          , substring(@entry, 1, 1) as chrctr
          , ascii(substring(@entry, 1, 1)) as code
    union all
    select id + 1
          , substring(@entry, ID + 1, 1)
          , ascii(substring(@entry, ID + 1, 1))
    from CTE
    where ID <= @max)

select chrctr, code from cte

print replace(replace(@entry, char(13) , ' '), char(10) , ' ')

答案 2 :(得分:0)

根据文本的来源,换行符有不同的编码。在我的测试字符串中,我把最常见的。

首先我用CHAR(10)(回车)替换所有CHAR(13)(换行),然后将所有加倍的CR替换为一个CR,最后将所有CR替换为想要的替换(你想要一个空白,我放一个更好的可视性点:

注意:将输出切换为&#34; text&#34;,否则您将看不到任何换行符......

DECLARE @text VARCHAR(100)='test single 10' + CHAR(10) + 'test 13 and 10' + CHAR(13) + CHAR(10) + 'test single 13' + CHAR(13) + 'end of test';

SELECT @text

DECLARE @ReplChar CHAR='.';

SELECT REPLACE(REPLACE(REPLACE(@text,CHAR(10),CHAR(13)),CHAR(13)+CHAR(13),CHAR(13)),CHAR(13),@ReplChar);

答案 3 :(得分:0)

SELECT REPLACE(REPLACE(@str, CHAR(13), ''), CHAR(10), '')

答案 4 :(得分:0)

我有同样的问题,这意味着我有一列的值带有换行符。我使用查询

update `your_table_name` set your_column_name = REPLACE(your_column_name,'\n','')

这解决了我的问题:)

基本上'\ n'是Enter键或换行符,在此查询中,我已将其替换为没有空格(我想要的空格)

继续学习:) Zain