更新替换查询是否正在替换列中的每个条目?

时间:2014-03-31 14:33:51

标签: sql

我不确定我做错了什么,但是星期一这是预料之中的事。我试图在表格中处理一些数据。有时,其中一列将包含问号。我想将所有问号替换为NULL。

这是我的查询,但它似乎只是替换每一个条目。

Update Table
set [Hours] = REPLACE([Hours], '?', NULL)

我也试过

Update Table
set [Hours] = REPLACE([Hours], CHAR(63), NULL)

我很自信我错过了最简单的错误。我出于某种原因无法看到它。

4 个答案:

答案 0 :(得分:2)

我会将此查询重写为不使用REPLACE

UPDATE Table SET [Hours] = NULL WHERE [Hours] = '?'

编辑:至于原始查询不起作用的原因,正如AlexK和roryap所说,The docs for REPLACE say that:

  

如果任何一个参数为NULL,则返回NULL。

您可以通过执行简单替换来测试,例如:

SELECT REPLACE('asdf', '?', NULL)

即使?不在搜索字符串中,也会返回null。

答案 1 :(得分:2)

使用where子句;

Update Table set [Hours] = NULL
   where [Hours] like '%?%'

答案 2 :(得分:0)

根据http://technet.microsoft.com/en-us/library/ms186862.aspxREPLACE

  

如果任何一个参数为NULL,则返回NULL。

使用WHERE子句,如其他答案所示:

UPDATE Table SET [Hours] = NULL WHERE [Hours] = '?'

答案 3 :(得分:-1)

试试这个

update table set Hours = null where Hours='?'