下面这个语句中(表里面是有数据的),怎么最后的查询结果不是-1而是NULL啊。求各位哥哥姐姐解疑答惑,或者可以用其它变通方式来解决该问题,先在这里谢谢大家了。
SELECT IFNULL(price,-1) 
        FROM td_rate_conf 
        WHERE false;

解决方案 »

  1.   

    因为条件where总是false,所以输出全会是null
      

  2.   

    去掉where条件试试
    SELECT IFNULL(price,-1) FROM td_rate_conf 
      

  3.   


    我这里加上where false;是因为这个sql的where条件很多,我需要处理查询无结果的情况,所以用了 where false代替了。而我又不想用if exists来判断,如果用 if exists来判断,那么我需要对同样的数据查询两次,第一次判断记录是否存在,第二次把查询结果赋值给变量。
      

  4.   

    SELECT IFNULL(price,-1) 
            FROM td_rate_conf 如果这个有数据,证明你where有问题
      

  5.   


    我这里加上where false;是因为这个sql的where条件很多,我需要处理查询无结果的情况,所以用了 where false代替了。而我又不想用if exists来判断,如果用 if exists来判断,那么我需要对同样的数据查询两次,第一次判断记录是否存在,第二次把查询结果赋值给变量。查询出来的结果为null 和没有查询到结果是两种不同的情况。
      

  6.   


    你不是很明白我这样写的用意,一个带where条件的sql,肯定有两种可能,要么能查询出结果,要么结果为空,我现在需要处理结果为空的情况。我代码中的sql如下
    SELECT         IFNULL(b.price,-1) into 变量
            FROM td_rate_conf b
            WHERE '13408077391' LIKE CONCAT(b.area_code, '%') AND b.suit_time = 39
            AND b.call_type = 2 AND FROM_UNIXTIME(1373886109) BETWEEN b.eff_time AND b.exp_time 
      

  7.   


    我这里加上where false;是因为这个sql的where条件很多,我需要处理查询无结果的情况,所以用了 where false代替了。而我又不想用if exists来判断,如果用 if exists来判断,那么我需要对同样的数据查询两次,第一次判断记录是否存在,第二次把查询结果赋值给变量。查询出来的结果为null 和没有查询到结果是两种不同的情况。意思我必须先用if exists 来判断是否有查询结果了?
      

  8.   

    如果where条件为false,那么会没结果,但是这个没结果不等于null
      

  9.   

    null其实是一个“值”,只是数据库不知道是什么值或者如何表示
      

  10.   


    你不是很明白我这样写的用意,一个带where条件的sql,肯定有两种可能,要么能查询出结果,要么结果为空,我现在需要处理结果为空的情况。我代码中的sql如下
    SELECT         IFNULL(b.price,-1) into 变量
            FROM td_rate_conf b
            WHERE '13408077391' LIKE CONCAT(b.area_code, '%') AND b.suit_time = 39
            AND b.call_type = 2 AND FROM_UNIXTIME(1373886109) BETWEEN b.eff_time AND b.exp_time 来个中间变量呗, set 变量=ifnull(变量,-1)
      

  11.   

    谢谢各位,已找到答案。不需要用IFNULL函数。当报NOT FOUND的错误时,需要把游标的done设为初始值。