oracle:这样的一个查询语句
:
SELECT * FROM T_OPERATOR WHERE T_OPERATOR.O_ACCOUNT=某个变量1 AND T_OPERATOR.O_PASSWD=某个变量2 AND T_OPERATOR.O_STATUS='0' AND T_OPERATOR.O_TYPE='1'
O_ACCOUNT不可以为NULL,而O_PASSWD可以为NULL,
我数据库里面有一条记录,T_OPERATOR.O_ACCOUNT='Admin',T_OPERATOR.O_PASSWD为空,T_OPERATOR.O_STATUS='0' AND T_OPERATOR.O_TYPE='1'.
当我用 某个变量1="Admin",某个变量2=""来查询的时候
查询不到任何记录
可是里面明明有啊,当我把O_PASSWD变为不是空,而某个变量2==T_OPERATOR.O_PASSWD来进行查询时,就可以查出这条记录.问题可能就是在NULL这里了
不知道是什么原因,怎么解决

解决方案 »

  1.   

    好乱啊.. 举例说明一下了..
    如果要查询空字段用下面的方法:
    select * from test where xx is null;
      

  2.   

    说白了就是一个密码验证
    我对话框输入的空密码跟数据库里面的密码字段NULL对不上
    查询不到
    不输入密码的时候就不行
    简洁了吧
    刚才把语句说复杂了
      

  3.   

    这个问题,你首先要有个概念,那就是密码是不能为空的~ 必须在用户设置密码的时候进行有效性检测,不准用户输入空密码~另外,空有两种情况..字符串的话,可以是空字符串"" ,也可以是空对象 NULL
    如果是第一种情况,用 select * from test where xx = ""; 查询
    否则,用select * from test where xx is null;
      

  4.   

    关键是数据库的字段不是我控制的啊
    允许为空啊
    只要帐户对了就可以登陆啊
    那我输入的密码要怎么表示为空呢
    CString m_pwd= "",这样来验证是不行的啊
    CString m_pwd=NULL;
    难道要这样
    呵呵
      

  5.   

    CString m_pwd=NULL;不是这样,说了如果为空的话,你的查询语句要写成:select * from test where 字段名 is null;