我不确定我做错了什么,但是星期一这是预料之中的事。我试图在表格中处理一些数据。有时,其中一列将包含问号。我想将所有问号替换为NULL。
这是我的查询,但它似乎只是替换每一个条目。
Update Table
set [Hours] = REPLACE([Hours], '?', NULL)
我也试过
Update Table
set [Hours] = REPLACE([Hours], CHAR(63), NULL)
我很自信我错过了最简单的错误。我出于某种原因无法看到它。
答案 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.aspx,REPLACE
如果任何一个参数为NULL,则返回NULL。
使用WHERE
子句,如其他答案所示:
UPDATE Table SET [Hours] = NULL WHERE [Hours] = '?'
答案 3 :(得分:-1)
试试这个
update table set Hours = null where Hours='?'