在SQL查询中使用REPLACE查询换行符/回车符

在SQL查询中使用REPLACE查询换行符/回车符

问题描述:

我有一个名为Account Type的数据库,其中包含回车符和换行符(CHAR(10)和CHAR(13))。在SQL查询中使用REPLACE查询换行符/回车符

当我搜索这个值时,我需要做一个REPLACE如下所示。以下代码正常工作。

SELECT AccountNumber,AccountType, 
    REPLACE(REPLACE(AccountType,CHAR(10),'Y'),CHAR(13),'X') FormattedText 
FROM Account 
WHERE AccountNumber=200 
AND REPLACE(REPLACE(AccountType,CHAR(10),' '),CHAR(13),' ') LIKE 
'%Daily Tax Updates: -----------------  Transactions%' 

我的问题是 - 其他字符是什么(类似于CHAR(10)AMD CHAR(13)),将需要这样的更换?

注意:该列的数据类型为VARCHAR

注:该查询从SQL Server Management Studio中

enter image description here

+3

我们不知道您的数据或您的要求,所以我们应该如何知道您需要替换哪些字符? – 2013-02-12 15:46:48

+0

@ dan1111。用户可以输入任何数据到数据库中。所以所有角色都需要这样的REPLACE。或者有没有比REPLCAE更好的方法? – Lijo 2013-02-12 15:47:55

+2

那么,你想要什么字符?将任何字符(包括换行符)存储在字段中是完全有效的。如果有一些你不想让,那是因为你的设计要求(我们不知道)。 – 2013-02-12 15:58:02

有可能嵌入标签(CHAR(9))等上运行。你可以找到你所需要的其他人物像这样的东西来取代(我们不知道你的目标是什么):

DECLARE @var NVARCHAR(255), @i INT; 

SET @i = 1; 

SELECT @var = AccountType FROM dbo.Account 
    WHERE AccountNumber = 200 
    AND AccountType LIKE '%Daily%'; 

CREATE TABLE #x(i INT PRIMARY KEY, c NCHAR(1), a NCHAR(1)); 

WHILE @i <= LEN(@var) 
BEGIN 
    INSERT #x 
    SELECT SUBSTRING(@var, @i, 1), ASCII(SUBSTRING(@var, @i, 1)); 

    SET @i = @i + 1; 
END 

SELECT i,c,a FROM #x ORDER BY i; 

您也可以它进入您之前要考虑这样做数据更好的清洗数据库。每次需要搜索或显示时清理它并不是最好的方法。

+0

谢谢。除了'REPLACE'还有更好的方法吗?我们不能在参数值之前加上'N'而不是使用REPLACE? – Lijo 2013-02-12 16:00:07

+1

@李约我不明白。你是否期望一个N前缀能够神奇地知道你不喜欢的所有角色,并让它们消失?你能回到这个问题,并进一步澄清你想要做什么? – 2013-02-12 16:03:32

+5

*闪烁* *闪烁* – swasheck 2013-02-12 16:05:09