我想在mysql 的select * from A where isreg<>'1'
我想将所有值不为1的都找出来。isreg为char型 isreg中有为null的和为0 的,我想把不等于1的找出来,但是找的时候结果为空。找不到想要的结果,请各位帮帮忙

解决方案 »

  1.   

    select * from A where isreg is null or  isreg='0' 
      

  2.   

    or
    select * from A where ifnull(isreg,'0')='0'
      

  3.   

    select *
    from A 
    where isreg <>'1'  and isreg is nullnull 的任何运算都为 null (除了 is null, ifnull())
      

  4.   

    http://dev.mysql.com/doc/refman/5.1/zh/tutorial.html#working-with-null3.3.4.6. NULL值操作
    NULL值可能令人感到奇怪直到你习惯它。概念上,NULL意味着“没有值”或“未知值”,且它被看作与众不同的值。为了测试NULL,你不能使用算术比较 操作符例如=、<或!=。为了说明它,试试下列查询:mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
    +----------+-----------+----------+----------+
    | 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
    +----------+-----------+----------+----------+
    |     NULL |      NULL |     NULL |     NULL |
    +----------+-----------+----------+----------+
    很显然你不能通过这些比较得到有意义的结果。相反使用IS NULL和IS NOT NULL操作符:mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
    +-----------+---------------+
    | 1 IS NULL | 1 IS NOT NULL |
    +-----------+---------------+
    |         0 |             1 |
    +-----------+---------------+
    请注意在MySQL中,0或 NULL意味着假而其它值意味着真。布尔运算的默认真值是1。