1.在数据库中有一个表,这个表的同一列里有<NULL>和‘’两种情况,其实,这两种都是代表空的意思,但空值怎么会有两种表达方式去呢?由于这两种表达方式的存在,造成了在应用中的识别困难,如要判别某字段中的一个值是否为空,我们就得这样写才行:
select *
from table1
where ((table1.XXX is not null) and (table1.XXX <>''))在这里where子句也不能写成这个样子:
where ((table1.XXX <>null) and (table1.XXX <>'')) 这样写编译不通过。要是每次都这样判断好麻烦哦,不知大家对这个问题有何见解?同时告诉我一下<NULL>和‘’如何进行相互转换啊?2、在DELPHI里当一个文本框获得光标时就触发的函数时什么?文本框失去光标时触发的函数又是什么?我在对象属性里找不着,我现在需要马上解决这几个问题,请大家帮一下忙,谢谢了。

解决方案 »

  1.   

    第二个问题:onEnter/onExit两个事件
      

  2.   

    null 表示未知(不是空值)文本框获得焦点 触发onEnter文本框失去焦点 触发onExit
      

  3.   

    sql里也不能这么判断啊table1.XXX <>null
    一定要是,is null 或者 is not null判断
      

  4.   

    第一个问题,null和''是不同的。
    在取出的时候,null是会有异常的,而''是作为字符来处理的。
    你可以这样来判断。
    第二个问题,一楼的已回。
      

  5.   

    null就相当于delphi中的nil,从存储上来看,nil表示地址为0
    ''相当于delphi中的'';从存储上看,它有地址,这个地址里面的内容为一个空0
    如果是sql可以这样这样判断isnull(FieldName, '') = '',如果是oracle用nvl(FieldName, '')(注nvl参数哪个在前我忘了,4一下就知道了)
      

  6.   

    where ((table1.XXX <>null) and (table1.XXX <>'')) 很明显,这样写通不过。null表示是一个未知的内容,并非是‘’,类型肯定不匹配,所以不行。失去和获得焦点是:onEnter/onExit两个事件
      

  7.   

    第一个问题你在数据库中直接写SQL语句将‘’替换成NULL2、文本框获得焦点 触发onEnter 文本框失去焦点 触发onExit
      

  8.   

    可以这样来做。在数据库中,给NULL字段一个默认值,为''这样,你就只用where able.xxx<>''来判断了。
      

  9.   

    第一个问题:
    建议先直接把这个字段为null的update成'',在数据库里把这个字段的default值设为0。不愿意转换的话也可以用这个来查
    select *
    from table1
    where isnull(table1.xxx,'')<>''
      

  10.   

    select ISNULL(MyFld1,'')
    from table1这样就可以使得选出的字段不包含 NULL
      

  11.   

    第一个问题:
    Select * From table1 Where Field1 is not null and  Field1<>''
    第二个问题:
    你在EDIT的onEnter(进入)onExit(退出)两个事件中写触发事件就OK了