2016-11-06 67 views
1

我想更新与UPDATE子句这样一个VARCHAR列:更新VARCHAR没有效果

UPDATE ptl SET version=NULL WHERE version = 'a'; 

和MySQL给了我这样的回答:

Query OK, 0 rows affected 

我有几个项目在所述版本是“A”例如像这样:

Title  version 
Hiper  a 

而且我的更新语句之后,它应该变成如下:

Title  version 
Hiper  NULL 

但它保持不变。

它为什么不改变?

+1

你确定''版本'中没有空白吗? – tkausl

+0

尝试使用'哪里版本像'a''而不是'where version ='a'' – mike510a

回答

1

看起来像“a”的东西似乎并不完全是'a'。这可能是由于各种原因。开始于:

select length(ptl.version), ptl.version 
from ptl 
where version like '%a%' 
order by length(ptl.version); 

您可以看到所返回版本的长度。

您可能还有其他字符,例如值中的空格。或者,你可能有一个看起来像小写字母的UTF字符。在后一种情况下,以上可能不会返回任何内容。

+1

是的,我认为它后面有一个尾随\ r。现在我可以用我的更新子句将其更改为NULL,但是当我尝试执行“select * from ptl where version = NULL”时,我没有行?即使它现在是NULL 编辑:okey我忘了使用IS NULL –