求一个sql语句,当查询到的记录数为空时,能够返回一个值'0'

时间:2022-03-19 21:56:56
sql语句类似于这样:select f1 from tabale1
当查询不到值时,即返回的记录集为空时,不让它返回一个空记录集,而是返回一个值: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

#7


谢谢大家

#8


if not exists (select f1 from tabale1)
  select 0 as f1 from tabale1
else
  select f1 from tabale1


不过反对楼主的构思,万一有记录f1=0,没法区分

#9


不过反对楼主的构思,万一有记录f1=0,没法区分

---------------------------

#10


我需要的是“一”个sql语句,不能是一段程序,因为我还要在此基础上进行嵌套
另外你的“不过反对楼主的构思,万一有记录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
只能返回一条记录,不是你最初描述的

#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

#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是表名

#19


mark

#20


用CASE判断

#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

#7


谢谢大家

#8


if not exists (select f1 from tabale1)
  select 0 as f1 from tabale1
else
  select f1 from tabale1


不过反对楼主的构思,万一有记录f1=0,没法区分

#9


不过反对楼主的构思,万一有记录f1=0,没法区分

---------------------------

#10


我需要的是“一”个sql语句,不能是一段程序,因为我还要在此基础上进行嵌套
另外你的“不过反对楼主的构思,万一有记录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
只能返回一条记录,不是你最初描述的

#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

#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是表名

#19


mark

#20


用CASE判断

#21