【问题标题】:Mysql int will not store non zero based null.Mysql int 不会存储基于非零的空值。
【发布时间】:2014-09-14 16:32:54
【问题描述】:

我似乎无法弄清楚如何让 mysql 将 int 值存储为“null”,而是继续给它一个基于零的值。在我的情况下,零对应用程序有意义。有人知道我如何存储实际的空值吗?

【问题讨论】:

  • 不,那是非常不同的。我可以插入一个空值,但是它将它转换为零。我无法将其转换为零,并且我的列设置为接受空值。
  • Define 将其转换为 0?在数据库中?
  • 当我运行这个 sql 语句 UPDATE my_table SET field1=null WHERE field1 = 0;值保持为零。我无法让数据库显示为空,它只显示零,它们意味着两个完全不同的东西。

标签: mysql


【解决方案1】:

我在我的手机上,所以我无法对此进行测试...此外,这太长了,无法发表评论...首先尝试选择有问题的行..然后如果它们没有返回,请尝试更新当行数等于 0 时选择。

也许它为空,但您在 mysql 工作台中有一个设置显示 0 代替

SELECT id, field1 
FROM table 
WHERE field1 IS NULL;

如果这不返回行,那么执行此操作

SELECT id, field1
FROM table
WHERE field1 =0

如果确实如此,请尝试使用这些确切的行进行更新

UPDATE table t,
(   SELECT id, field1
    FROM table
    WHERE field1 = 0
) temp
SET t.field1 = NULL
WHERE t.id = temp.id

希望对你有帮助

【讨论】:

  • 我完全不知道我做了什么,但由于某种原因,它现在终于可以工作了。谢谢约翰。
  • 当然...你遇到的有趣问题
【解决方案2】:

你就写null:

mysql> CREATE TABLE t (i INT);
Query OK, 0 rows affected (0.15 sec)

mysql> INSERT INTO t VALUES (null);
Query OK, 1 row affected (0.09 sec)

mysql> SELECT * FROM t;
+------+
| i    |
+------+
| NULL |
+------+
1 row in set (0.00 sec)

mysql> SELECT * FROM t WHERE i IS NULL;
+------+
| i    |
+------+
| NULL |
+------+
1 row in set (0.03 sec)

【讨论】:

  • 相信我,我不知道是什么导致了这个问题。
  • 我在上面的问题下做了以上
  • 但它现在可以工作了,据我所知,这可能是一个工作台故障。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 2022-01-23
  • 1970-01-01
  • 2012-05-17
相关资源
最近更新 更多