我有一个大型数据表,其中一些列包含换行符。我想删除它们并用一些空格替换它们。
有人能告诉我如何在SQL Server中执行此操作吗?
提前致谢
答案 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