2017-04-05 54 views
1

我正在尝试从没有数据质量控制的源导入数据。我知道如何删除/替换大多数东西,但是我遇到了包含单个`(反引号)的字段,我需要用NULL替换它。我需要删除反引号,因为我将数据从varchar字段转换为数字。我已经试过这个版本:用NULL更新字段包含单个`(反引号)

Update dbo.Sale 
Set Stamps = NULL 
where Stamps = '''' 
+1

你的代码工作可能是,周围有空间?试试'WHERE LTRIM(RTRIM(Stamps))='''''' – Shnugo

+0

如果这没有帮助,试着找出,如果你看到的符号是一个普通的单引号accually:'SELECT CAST(Stamps AS VARBINARY(1) )FROM dbo.Sales'这应该显示为'0x27'(并且没有其他),如果这真的不是别的,而是简单的引号。 – Shnugo

+0

那么我敢肯定,所有这些解决方案都可以工作,我搞砸了,它不是'它是'(反作用)。对不起,我得到一些咖啡因,戴上眼镜,从后面拉头。 – BRM

回答

0

可以使用CHAR(39)为清晰起见:

UPDATE dbo.Sale 
SET Stamps = NULL 
WHERE Stamps = CHAR(39); 
0

这可能会帮助你

DECLARE @t TABLE (MyColumn VARCHAR(255)) 

INSERT INTO @t 
     (MyColumn) 
VALUES ('''' -- MyColumn - varchar(255) 
     ) 

SELECT * 
FROM @t 

UPDATE @t 
SET MyColumn = NULL 
WHERE MyColumn = CHAR(39) 

SELECT * 
FROM @t 

OR

UPDATE @t 
    SET MyColumn = NULL 
    WHERE MyColumn = ''''