select count(*) from t1 where col1 > 0
339074条select count(*) from t1 where col1 > 0 and LENGTH(col2) > 0
52308select count(*) from t1 where col1 > 0 and LENGTH(col2) = 0
0为什么第二条第三条查出来的结果之和和第一条查出来的结果不一样呢?col2字段是varchar类型,长度150,存储的url地址(也可能为空或者为数字)
col1字段int类型,存储某编号 另外:
select count(*) from t1 where col1 > 0 and col2 > 0
16484 select count(*) from t1 where col1 > 0 and col2 = 0
32584mysql查询

解决方案 »

  1.   

    不一样很正常吧,col2字段是varchar类型,长度150存储的url地址(也可能为空或者为数字)
    既然是字符串,那么你直接用col2 > 0 比较就已经有问题了,字符串都不能这么比较
    这是其一,其二,字符串可能为空,又不是只有0或者大于0
      

  2.   

    select count(*) from t1 where col1 > 0 and col2 = ''
    0select count(*) from t1 where col1 > 0 and col2 != ''
    52308这样也不能全覆盖...
      

  3.   

    select count(*) from t1 where col1 > 0 and col2 is null 这样有没有值呢
      

  4.   


    有了...284786  原来是这样多谢几位...另外我加你QQ了你看下没有看见QQ消息啊腾讯2B了么。我汗!!!
      

  5.   

    因为 col2 也可能为空: null
    自然不属于 LENGTH(col2) = 0 范围
      

  6.   

    受教   以后mysql查字符串要考虑到is null