我可以在NOT NULL字段中插入空字符串吗?

时间:2010-12-30 14:11:05

标签: sql

我可以在非空字段中插入空字符串吗?

insert into xyz(A,B) values(1,'');  // is this possible if B is NOT NULL?

3 个答案:

答案 0 :(得分:17)

是的,你可以...... NULL值的概念是SQL新手的常见混淆源,他们经常认为NULL与空字符串''相同,或者值为零。

事实并非如此。从概念上讲,NULL表示“缺少未知值”,并且与其他值的处理方式略有不同。例如,要测试NULL,您不能使用算术比较运算符,例如=,<或<>在大多数DBMS中。

答案 1 :(得分:17)

取决于DBMS。

Oracle :''和null相同

SQL-Server 是:''和null是不同的值。

答案 2 :(得分:1)

正如Daniel所说,是的,您可以将零长度字符串插入NOT NULL字段(Oracle除外)。但是,如果您还要排除零长度字符串,则可以添加约束:

ALTER TABLE xyz ADD CONSTRAINT CHECK (b LIKE '_%');

大多数现代数据库都有一个可用于约束的正则表达式运算符或函数,但确切的语法因数据库而异。