当查询不到值时,即返回的记录集为空时,不让它返回一个空记录集,而是返回一个值:0,也就是让f1等于0
先谢谢大家了!
20 个解决方案
#1
select isnull(f1,0) from tabale1
#2
这样不行,因为返回的是一个空记录集,而不是null,如果能返回null的话,那也就是一个记录集了。
#3
楼主的意思是:没有查询到记录,在查询字段里显示为0吗
#4
是的
#5
select case count(*) when 0 then 0 end from tablename
#6
lxzm1001(*蓝星之梦*) :
你的思路是对的,应该是:
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
你的思路是对的,应该是:
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
#7
谢谢大家
#8
if not exists (select f1 from tabale1)
select 0 as f1 from tabale1
else
select f1 from tabale1
不过反对楼主的构思,万一有记录f1=0,没法区分
select 0 as f1 from tabale1
else
select f1 from tabale1
不过反对楼主的构思,万一有记录f1=0,没法区分
#9
不过反对楼主的构思,万一有记录f1=0,没法区分
---------------------------
---------------------------
#10
我需要的是“一”个sql语句,不能是一段程序,因为我还要在此基础上进行嵌套
另外你的“不过反对楼主的构思,万一有记录f1=0,没法区分”是有道理的,但因为我的需求比较特殊,所有也是可以的。
另外你的“不过反对楼主的构思,万一有记录f1=0,没法区分”是有道理的,但因为我的需求比较特殊,所有也是可以的。
#11
用存储过程
#12
select case when exists(select 1 from 表名) then 1 else 0 end
#13
只用一条SQL语句,我看肯定做不到吧
#14
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
能够满足我的需求,感谢大家的讨论!
能够满足我的需求,感谢大家的讨论!
#15
一个if语句可以看作一个语句,大部分前端语言都支持的
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
只能返回一条记录,不是你最初描述的
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
只能返回一条记录,不是你最初描述的
#16
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
只能返回一条记录,不是你最初描述的
----------
不解
只能返回一条记录,不是你最初描述的
----------
不解
#17
select case when(
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
#18
select case when(
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
其中zero是tablename的字段名称 tablename是表名
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
其中zero是tablename的字段名称 tablename是表名
#19
mark
#20
用CASE判断
#21
#1
select isnull(f1,0) from tabale1
#2
这样不行,因为返回的是一个空记录集,而不是null,如果能返回null的话,那也就是一个记录集了。
#3
楼主的意思是:没有查询到记录,在查询字段里显示为0吗
#4
是的
#5
select case count(*) when 0 then 0 end from tablename
#6
lxzm1001(*蓝星之梦*) :
你的思路是对的,应该是:
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
你的思路是对的,应该是:
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
#7
谢谢大家
#8
if not exists (select f1 from tabale1)
select 0 as f1 from tabale1
else
select f1 from tabale1
不过反对楼主的构思,万一有记录f1=0,没法区分
select 0 as f1 from tabale1
else
select f1 from tabale1
不过反对楼主的构思,万一有记录f1=0,没法区分
#9
不过反对楼主的构思,万一有记录f1=0,没法区分
---------------------------
---------------------------
#10
我需要的是“一”个sql语句,不能是一段程序,因为我还要在此基础上进行嵌套
另外你的“不过反对楼主的构思,万一有记录f1=0,没法区分”是有道理的,但因为我的需求比较特殊,所有也是可以的。
另外你的“不过反对楼主的构思,万一有记录f1=0,没法区分”是有道理的,但因为我的需求比较特殊,所有也是可以的。
#11
用存储过程
#12
select case when exists(select 1 from 表名) then 1 else 0 end
#13
只用一条SQL语句,我看肯定做不到吧
#14
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
能够满足我的需求,感谢大家的讨论!
能够满足我的需求,感谢大家的讨论!
#15
一个if语句可以看作一个语句,大部分前端语言都支持的
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
只能返回一条记录,不是你最初描述的
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
只能返回一条记录,不是你最初描述的
#16
select f1=case count(*) when 0 then 0 else max(f1) end from tablename
只能返回一条记录,不是你最初描述的
----------
不解
只能返回一条记录,不是你最初描述的
----------
不解
#17
select case when(
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
#18
select case when(
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
其中zero是tablename的字段名称 tablename是表名
select isnull(zero,0) from tablename --where 0=1
) is null then 0 else
(select isnull(zero,0) from tablename --where 0=1
)
end zero
其中zero是tablename的字段名称 tablename是表名
#19
mark
#20
用CASE判断