请教关于Mysql的IFNULL和ISNULL

liujiduo 发布于 2015/03/10 10:12
阅读 371
收藏 0

我有一张T_MERCHANT表,主键是MERCHANT_ID,有个PARENT_ID字段,存储父节点,默认值为0。

现在我想根据MERCHANT_ID查询T_MERCHANT表里的PARENT_ID,当记录不存在或者PARENT_ID为NULL的时候返回0,SQL如下:

SELECT IFNULL(PARENT_ID, 0) FROM T_MERCHANT WHERE MERCHANT_ID = 12;

这里MERCHANT_ID等于12的记录时不存在的,这时应该返回0才对,但是返回的却是NULL。然后我把IFNULL(PARENT_ID, 0)改成ISNULL(PARENT_ID),返回的也是NULL。

请问该怎么修改才能使这条SQL的返回结果是0呢??谢谢。

加载中
0
yzChen-
yzChen-

1、select decode(PARENT_ID, null, 0)  FROM...

2、select case when PARENT_ID is null then 0 else PARENT_ID end  FROM...

yzChen-
yzChen-
回复 @liujiduo : 各种尝试过了,因为本身查询“无记录”,虽然数据库工具显示的是 null,但那只是一种显示方式,实际上根本不是 null,而是 “空行”才对。 解决办法有2个: 1、数据库中解决:做一个函数或者存储过程实现 2、java中解决:判断result的size是否大于0
liujiduo
liujiduo
执行SQL出错
0
负郭无田
负郭无田
SELECT IF(PARENT_ID, PARENT_ID,0) FROM T_MERCHANT WHERE MERCHANT_ID = 12;
负郭无田
负郭无田
回复 @liujiduo : SELECT IF((SELECT count(*) FROM T_MERCHANT WHERE MERCHANT_ID = 12)=1, PARENT_ID,0) FROM T_MERCHANT WHERE MERCHANT_ID = 12;
liujiduo
liujiduo
还是NULL
返回顶部
顶部