mysql中不为NULL接受空字符串

mysql中不为NULL接受空字符串,mysql,Mysql,我有两张桌子。 一个使用int作为主键,另一个使用varchar主键 当插入空字符串(“”)时,我得到int的编程错误,但成功地存储了varchar。 这是怎么回事 有没有办法使varchar字段不接受空字符串? 我希望他们给出一些我能捕捉到的数据库错误 空字符串与null不同。(在MySQL和许多编程语言中也是如此。)尝试在varchar的主键中插入null。它应该在插入时失败-就像int一样 正如上面@David所说,空字符串不能转换为int,因此MySQL选择null 空字符串与null不

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

当插入空字符串(“”)时,我得到int的编程错误,但成功地存储了varchar。 这是怎么回事

有没有办法使varchar字段不接受空字符串?
我希望他们给出一些我能捕捉到的数据库错误

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


正如上面@David所说,空字符串不能转换为int,因此MySQL选择null

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

正如上面@David所说,空字符串不能转换为int,因此MySQL选择null

当插入空字符串(“”)时,我得到int的编程错误

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

但是成功地存储了varchar

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

这些值都不是空的
NULL
表示没有值。空字符串仍然是一个值

当插入空字符串(“”)时,我得到int的编程错误

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

但是成功地存储了varchar

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


这些值都不是空的
NULL
表示没有值。空字符串仍然是一个值。

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

CASE WHEN IN_IntValue = '' THEN NULL ELSE IN_IntValue

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

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

CASE WHEN IN_IntValue = '' THEN NULL ELSE IN_IntValue

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

根据ANSI的定义,在几乎所有数据库中,空字符串都不是空的


Oracle碰巧将空字符串视为
NULL
值,这通常相当令人困惑。但这是SQL语言的一个例外。

根据ANSI的定义,在几乎所有数据库中,空字符串都不是
NULL


Oracle碰巧将空字符串视为
NULL
值,这通常相当令人困惑。但这是SQL语言的一个例外。

因为空字符串不是整数。所以空字符串是varchar?是的
varchar
表示可变长度字符数据。这是一个完全不同的问题,但通常使用
trigger
s验证字段。@shadow0359:看起来已经有了答案:因为空字符串不是整数。那么空字符串是varchar?是的
varchar
表示可变长度字符数据。这是一个完全不同的问题,但通常使用
trigger
s验证字段。@shadow0359:看起来已经有了答案: