如何在Mysql中设置文本字段为空

如何在Mysql中设置文本字段为空,mysql,Mysql,我正在用mysql编写一个简单的查询,没有结果。。。我不明白为什么。你能帮我理解吗 查询: UPDATE mytable set myfield = NULL where myfield = "BAR"; 结果:0行受影响 类似查询: UPDATE mytable set myfield = "FOO" where myfield = "BAR"; 结果:600行受影响 myfield是一个文本字段,默认值为NULL可为空 我错在哪

我正在用mysql编写一个简单的查询,没有结果。。。我不明白为什么。你能帮我理解吗

查询:

UPDATE mytable set myfield = NULL where myfield = "BAR";
结果:0行受影响

类似查询:

UPDATE mytable set myfield = "FOO" where myfield = "BAR";
结果:600行受影响

myfield是一个文本字段,默认值为NULL可为空

我错在哪里

更多细节:我在phpmyadmin上附加了一个真实查询模拟的屏幕截图。很抱歉截图上有意大利语,希望你能理解


您没有收到错误,但结果是:0行受影响。这可能意味着没有匹配的myfield=BAR。再次检查是否有一行具有该值

如果你只是:

UPDATE mytable set myfield = NULL

您将看到不会出现任何错误。

这种情况不可能重复发生;set子句中的新值不会影响where子句所做的筛选。仔细检查您运行的实际查询,这些查询显然不是这些伪代码。我将此标记为缺少完整信息来复制/诊断声明的问题。您一定在第一个查询中键入了错误的内容。在应用显示的更新之前,显示select*from harddisk where sessione_fase1='test'的行数。顺便说一下,如图所示,您应该对字符串使用单引号,因为这是ANSI标准分隔符;双引号通常被假定为分隔标识符,但我怀疑这可能是这里的问题。@下划线\u d,sessione\u fase1='test'为641的硬盘中select*的行数。主要问题似乎是sessione_fase1不接受空值。我尝试了查询建议Chris UPDATE mytable set myfield=NULL,结果受0行影响。但您也会在表的每一行中将其设置为NULL,这可能不是您想要的。@EJP,正确。我的观点是,问题不是将myfield设置为NULL,而是条件失败。@Chris为什么当他将其设置为FOO时条件成功了,而当他将其设置为NULL时却没有成功?这是相同的条件。@Chris,您的查询返回0行受影响的数据。似乎无法将该列设置为NULL。@SimoneGiusti检查该列上的约束条件。但我希望您的环境报告一个违规行为,而不是只是默默地不更新。