MySQL中一个有效的空blob的值是多少?

3

假设您想要在名为 table_a 的表中插入或更新一行数据。

table_a有一个名为 column_a blob 列。 在 column_a 中,您只想通过故意传递值来插入有效和最小的空值。

在MySQL中是否可以实现?如果可以,有效空blob的值是什么?


只使用 NULL 就可以了吗? - Terry
@Terry 我尝试了 ... SET column_a=NULL 但好像没有起作用。它显示了 Unrecognized keyword. (near "NULL" at position 66) - Abel Callejo
这可能是因为您在查询中使用了保留关键字?https://stackoverflow.com/questions/44390539/mysql-syntax-error-unrecognized-keyword-null。您可以[设置一个SQLfiddle](http://www.sqlfiddle.com/)来展示一个基本的概念验证示例。 - Terry
1
请注意,Unrecognized keyword. (near "NULL" at position 66)不是来自MySQL服务器的错误。这个特定的错误似乎是您正在使用的查询工具中的缺陷。 - Michael - sqlbot
2个回答

1

在填充 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     |
+----+----------+

如果你用空值填充blob,当有一个空值的图像时,你的datagridview会出错。我假设blob用于存储图像二进制数据。 - undefined

0

NULL值可能是你要找的。假设你的表有iddata这两列。如果data没有默认值,那么你可以执行insert into table_a (?,?) VALUES(1,NULL)。相应的记录将具有id1data等于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_
这就是我认为必须有一个有效的空 blob 值而不是 NULL 的原因。我不应该更改列。 - Abel Callejo
我明白了。但我不理解的是,为什么您认为“NULL”值是一种“无效”的值。您的列存储什么类型的数据?如果它是一个对象“Object”,您可以将“Object()”实例(默认构造函数或等效物)存储为有效的空blob值。然而,我建议允许“NULL”,因为这在语义上是我认为您想要的。 - Picnix_
这些Blob类型通常用于文件/图片等。 - Abel Callejo
1
然后你应该允许使用NULL表示“没有文件”或“没有图像”。我认为假设NULL不能描述这种情况是基本错误的。但是,如果你根本没有改变的可能性,那么就用空字符串代替(not null并不意味着不能使用false等效值,而是表示“没有值”)。 - Picnix_
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接