非空字段可以为空?在SQL SERVER7.0中插入时,非空字段必填,非空字段正常。在对已存在的记录修改时,可以把非空字段的内容删除并保存,数据库也不报错,这是

  • 主题发起人 主题发起人 于小澜
  • 开始时间 开始时间

于小澜

Unregistered / Unconfirmed
GUEST, unregistred user!
非空字段可以为空?在SQL SERVER7.0中插入时,非空字段必填,非空字段正常。在对已存在的记录修改时,可以把非空字段的内容删除并保存,数据库也不报错,这是为什么?(68分)<br />
 
其实字段不允许为空是指不能为null,但是一些字段,例如varchar,你将里面的内容
删除其实字段并不是为null,而是为长度为零的字符串,这和null是有区别的。
 
有什么办法控制长度为零的字符串存入?
 
where len(column)>0
 
有两个办法
1、用触发器,检测rtrim后的字段长度

2、前台检测,每次保存前检测一下
 
Null和‘’是有区别的!你把Varchar字段的内容删掉其实是把它置为'',并不是null
 
如果深入编译器理解的话(但愿我下面的描述可以让你理解)
如果把每个字符的占位看成一个空格的话,编译程序的过程这样理解 null 和 '',
null理解为□,编译器不在字符所占位置填任何东西,
但是''理解为[/0],这里/0是编译器内部自动添加给''这样的字符串的,
表示一个长度为0的字符。当然了/0在给我们看的结果中是看不见的,
仅供编译器翻译该字符串

不知道我说明白了没有
 
多人接受答案了。
 
后退
顶部