【问题标题】:Can I insert an empty string in a NOT NULL field?我可以在 NOT NULL 字段中插入一个空字符串吗?
【发布时间】:2010-12-30 14:11:05
【问题描述】:

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

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

【问题讨论】:

  • 除了// 不是标准的SQL 注释分隔符。 ;-)

标签: sql


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    取决于 DBMS。

    Oracle no: '' 和 null 相同

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

    【讨论】:

    • +1。当我从 MySQL 切换到 Oracle 时,我真的很努力。 where code='' 不再返回“空字符串”...
    【解决方案3】:

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

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

    大多数现代数据库都有一个正则表达式运算符或函数,您也可以将其用于约束,但具体语法因数据库而异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多