日期:2014-05-17  浏览次数:20552 次

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

------解决方案--------------------
因为条件where总是false,所以输出全会是null
------解决方案--------------------
去掉where条件试试
SELECT IFNULL(price,-1) FROM td_rate_conf 
------解决方案--------------------
引用:
Quote: 引用:

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


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


查询出来的结果为null 和没有查询到结果是两种不同的情况。

------解决方案--------------------
如果where条件为false,那么会没结果,但是这个没结果不等于null
------解决方案--------------------
null其实是一个“值”,只是数据库不知道是什么值或者如何表示
------解决方案--------------------
引用:
Quote: 引用:

SELECT IFNULL(price,-1) 
        FROM td_rate_conf 

如果这个有数据,证明你where有问题


你不是很明白我这样写的用意,一个带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)