【发布时间】:2010-12-30 14:11:05
【问题描述】:
我可以在非空字段中插入一个空字符串吗?
insert into xyz(A,B) values(1,''); // is this possible if B is NOT NULL?
【问题讨论】:
-
除了
//不是标准的SQL 注释分隔符。 ;-)
标签: sql
我可以在非空字段中插入一个空字符串吗?
insert into xyz(A,B) values(1,''); // is this possible if B is NOT NULL?
【问题讨论】:
// 不是标准的SQL 注释分隔符。 ;-)
标签: sql
是的,你可以... NULL 值的概念对于 SQL 新手来说是一个常见的混淆来源,他们经常认为 NULL 与空字符串 '' 或零值相同。
事实并非如此。从概念上讲,NULL 表示“丢失的未知值”,它的处理方式与其他值有些不同。例如,要测试 NULL,您不能在大多数 DBMS 中使用算术比较运算符,例如 =、。
【讨论】:
取决于 DBMS。
Oracle no: '' 和 null 相同
SQL-Server yes: '' 和 null 是不同的值。
【讨论】:
where code='' 不再返回“空字符串”...
正如 Daniel 所说,是的,您可以将零长度字符串插入 NOT NULL 字段(Oracle 除外)。但是,如果您还想排除零长度字符串,您可以添加一个约束:
ALTER TABLE xyz ADD CONSTRAINT CHECK (b LIKE '_%');
大多数现代数据库都有一个正则表达式运算符或函数,您也可以将其用于约束,但具体语法因数据库而异。
【讨论】: