Select语句中的SQL 2005回车导致数据换行

时间:2014-04-23 13:44:53

标签: sql sql-server

这是我的查询。

select
    a.LoanNumber,
    u.Comments,
From
    LoanApp as a
    LEFT JOIN Summary as u on a.id = u.loanapp_id
        inner join temploannumber as t on a.LoanNumber = t.loannumber
order by a.LoanNumber

我的问题是评论字段是一个包含回车符的文本字段。查询结果如下所示:

12345    This is a test

Test failed for this loan.

23456    This is a test. Test was successful.

34567    This is a test.

Test failed for this loan.

Test failed again for this loan.

如何在select语句中删除回车符,如下图所示,没有数据包装?我不想影响存储在数据库中的数据。

12345    This is a test. Test failed for this loan.

23456    This is a test. Test was successful.

34567    This is a test. Test failed for this loan. Test failed again for this loan.

2 个答案:

答案 0 :(得分:1)

我还有一个可以使用的功能,删除所有控制字符,但您可能没有权限创建功能。我不记得我在哪里找到了这段代码,但我相信你可以在某个地方找到它。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

 CREATE FUNCTION [dbo].[RemoveNonDisplayChars]

        (@pString VARCHAR(8000))
RETURNS VARCHAR(8000) 
     AS
  BEGIN

--===== Declare Local variables
DECLARE @IncorrectCharLoc SMALLINT, --Position of bad character
        @Pattern          CHAR(37)  --Bad characters to look for

 SELECT @Pattern          = '%['
                          + CHAR(0)+CHAR(1)+CHAR(2)+CHAR(3)+CHAR(4)
                          + CHAR(5)+CHAR(6)+CHAR(7)+CHAR(8)+CHAR(9)
                          + CHAR(10)+CHAR(11)+CHAR(12)+CHAR(13)+CHAR(14)
                          + CHAR(15)+CHAR(16)+CHAR(17)+CHAR(18)+CHAR(19)
                          + CHAR(20)+CHAR(21)+CHAR(22)+CHAR(23)+CHAR(24)
                          + CHAR(25)+CHAR(26)+CHAR(27)+CHAR(28)+CHAR(29)
                          + CHAR(30)+CHAR(31)+CHAR(127)
                          + ']%',
        @IncorrectCharLoc = PATINDEX(@Pattern, @pString)

  WHILE @IncorrectCharLoc > 0
 SELECT @pString          = STUFF(@pString, @IncorrectCharLoc, 1, ''),
        @IncorrectCharLoc = PATINDEX(@Pattern, @pString)
 RETURN @pString
    END

然后只需对它执行功能。

select a.LoanNumber, RemoveNonDisplayChars(u.Comments)
From LoanApp as a 
LEFT JOIN Summary as u on a.id = u.loanapp_id 
inner join temploannumber as t on a.LoanNumber = t.loannumber 
order by a.LoanNumber
祝你好运!

答案 1 :(得分:0)

试试这个。它用空字符串替换换行符和回车符。

select a.LoanNumber, REPLACE(REPLACE(u.Comments, char(13), ''), char(10), '') 
From LoanApp as a 
LEFT JOIN Summary as u on a.id = u.loanapp_id 
inner join temploannumber as t on a.LoanNumber = t.loannumber 
order by a.LoanNumber