假设您想要在名为 table_a 的表中插入或更新一行数据。
table_a有一个名为 column_a 的 blob 列。 在 column_a 中,您只想通过故意传递值来插入有效和最小的空值。
在MySQL中是否可以实现?如果可以,有效空blob的值是什么?
在填充 BLOB 列时,NULL 应该可以使用。
示例:
-- Create a table with BLOB column
CREATE TABLE table_a (
id INTEGER PRIMARY KEY,
column_a BLOB
);
-- Populate a row with BLOB column as NULL
INSERT INTO table_a values(1,NULL);
-- Check data in table
select * from table_a;
+----+----------+
| id | column_a |
+----+----------+
| 1 | NULL |
+----+----------+
NULL
值可能是你要找的。假设你的表有id
和data
这两列。如果data
没有默认值,那么你可以执行insert into table_a (?,?) VALUES(1,NULL)
。相应的记录将具有id
为1
和data
等于NULL
。
另一种解决方法是将列定义为默认值设置为NULL
。然后,以上请求等同于insert into table_a (?) VALUES (1)
。
外部参考: https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html
NULL
设置为一个值的原因。您应该使用以下命令:ALTER TABLE table_a CHANGE COLUMN column_a column_a BLOB;
或者ALTER TABLE table_a ALTER column_a SET DEFAULT NULL;
这样它就有了一个默认值为 NULL
的设置。 - Picnix_NULL
的原因。我不应该更改列。 - Abel CallejoNULL
表示“没有文件”或“没有图像”。我认为假设NULL
不能描述这种情况是基本错误的。但是,如果你根本没有改变的可能性,那么就用空字符串代替(not null
并不意味着不能使用false等效值,而是表示“没有值”)。 - Picnix_
NULL
就可以了吗? - Terry... SET column_a=NULL
但好像没有起作用。它显示了Unrecognized keyword. (near "NULL" at position 66)
。 - Abel CallejoUnrecognized keyword. (near "NULL" at position 66)
不是来自MySQL服务器的错误。这个特定的错误似乎是您正在使用的查询工具中的缺陷。 - Michael - sqlbot