2017-03-06 77 views
-5

在简单MS SQL查询IAM无法得到结果SQL和不取,或不给予正确的结果

SELECT * FROM tblActivityTracker 
WHERE (WoM IN (NULL, 2)) 
AND (DateName = DATENAME(weekday, GETDATE())) 

PLS建议

+0

请查看示例数据和预期的结果,你会得到 – Jens

+0

您不能使用'null'用'IN'条款的结果。 – Wanderer

+0

如果WoM是一个字符串,使用'WHERE(WoM is NULL or WoM = 2)' –

回答

0

你不能IN子句中使用null

查询

SELECT * FROM tblActivityTracker 
WHERE (WoM IN (2) OR Wom is null) -- or Wom = 2 instead of using IN 
AND (DateName = DATENAME(weekday, GETDATE())); 
+0

以上查询提取只WoM是空的不是WoM是2 – user3926897

+0

@ user3926897:结果将与两个Wom有空值和2 – Wanderer

+0

我想知道为什么它不提取,如果单独运行其未来,但我需要结合 – user3926897

0

试试这个

SELECT * FROM tblActivityTracker 
WHERE (WoM =2 OR Wom IS NULL) 
AND (DateName = DATENAME(weekday, GETDATE())); 

或者试试这个

SELECT * FROM tblActivityTracker 
WHERE (WoM in('NULL','2')) 
AND (DateName = DATENAME(weekday, GETDATE())); 
0

你能做的最好的是使用ISNULL

SELECT * FROM tblActivityTracker 
WHERE isnull(WoM,'') IN ('', '2') 
AND DateName = DATENAME(weekday, GETDATE()) 
0

感谢的建议...... 其实下面的查询帮助

SELECT * FROM tblActivityTracker 
WHERE (WoM IN (2)) AND (DATENAME(weekday, GETDATE()) = DateName) OR 
    (WoM IS NULL) AND (DATENAME(weekday, GETDATE()) = DateName)