如果选择返回空结果集,则在SQL Server“ isEmpty”返回数据中是否存在函数

时间:2019-03-05 10:48:17

标签: sql sql-server tsql

我有一张这样的桌子

EmpId  No_of_days
  1       24
  2       28
  6       24
  7       30
  8       10
  9       15

当我编写选择语句时

SELECT No_of_days FROM _table WHERE EmpId = 3 or 4 or 5

我得到了一个空结果集。

我希望员工3和4和5的结果集返回0天

3 个答案:

答案 0 :(得分:4)

您可以使用import java.util.WeakHashMap; public class Main2 { public static void main(String[] args) throws InterruptedException{ String name = new String("ltt"); WeakHashMap<String, Integer> map = new WeakHashMap<>(); map.put(name, 18); System.out.println(map.size()); // 1 name = null; System.gc(); Thread.sleep(10); System.out.println(map.size()); // 0 } } 构造并执行values()

left join

编辑::如果您有更多select tt.empid, isnull(t.No_of_days, 0) from ( values (3), (4), (5) ) tt (empid) left join table t on t.empid = tt.empid; 的ID,则必须维护一个登台表并执行employee

left join

答案 1 :(得分:3)

假设 ,您有一个包含所有员工的表(如果不是,则3、4和5位员工来自何处?),您可以使用{ {1}}到示例表(LEFT JOIN)上:

_table

这将为您的所有员工提供行。如果只需要3、4和5,则可以添加SELECT e.empid, ISNULL(t.No_of_days,0) FROM Employee e --No idea what your employee table is actually called, so guessed. LEFT JOIN _table t ON e.empid = t.empid;

WHERE

答案 2 :(得分:1)

使用coalesce

   select coalesce(No_of_days,0) 
  from _table WHERE EmpId in( 3 , 4 , 5)

顺便说一句,使用In代替or,如果您必须在EmpId中将这些ID推送1 Coalesce()将起作用,否则,如果empid中没有值,则它将不起作用