mysql中的NOT NULL是否接受空字符串

时间:2016-11-23 13:26:07

标签: mysql

我有两张桌子。 一个用int作为主键,另一个用varchar主键。

当插入空字符串时("")我得到int的编程错误但成功存储了varchar。 这是如何工作的?

有没有办法让varchar字段不接受空字符串? 我希望他们提供一些我可以捕获的数据库错误。

4 个答案:

答案 0 :(得分:3)

  

当插入空字符串时("")我得到int

的编程错误

因为字符串不是int。并且无法自动将非数字字符串转换为 int

  

但成功存储了varchar

因为字符串 varchar。像CHAR and VARCHAR这样的列用于存储字符数据,这就是字符串。

这些值都不是NULLNULL缺少价值。空字符串仍然是一个值。

答案 1 :(得分:1)

空字符串与null不同。 (在MySQL和许多编程语言中也是如此。)尝试在varchar的主键中插入null。它应该在插入时失败 - 就像int一样。

正如@David所说,空字符串无法转换为int,因此MySQL选择null。

答案 2 :(得分:1)

在几乎每个数据库和ANSI定义中,空字符串都不是NULL

Oracle会将空字符串视为NULL值,这通常会让人感到困惑。但这是SQL语言的一个例外。

答案 3 :(得分:0)

不确定您要做什么,我们需要查看代码以了解解决此问题的最佳方法,但您可以尝试:

CASE WHEN IN_IntValue = '' THEN NULL ELSE IN_IntValue

一般情况下,据我所知,只有Oracle将空字符串视为NULL。在MySQL中,它们是两个不同的东西。