我可以在非空字段中插入空字符串吗?
insert into xyz(A,B) values(1,''); // is this possible if B is NOT NULL?
答案 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 '_%');
大多数现代数据库都有一个可用于约束的正则表达式运算符或函数,但确切的语法因数据库而异。