AND / OR where子句逻辑混乱

时间:2014-09-30 15:57:47

标签: sql where-clause logical-operators

所以我为主要和移动电话的客户提供此表。我有一个有效的数字或空格或值为NULL。

CustName   MainPhone     MobilePhone
Joe        800-111-1234  321-123-1234
Jack                     321-321-1237  
Jill                     
Jimmy      321-123-1234  
James      NULL          432-322-2222  

所以我总共有5条记录,我想过滤掉主要和移动都有空白的CustNames。所以我首先检查了我有多少并使用了这个WHERE CLAUSE:

Select *
From MyTable
Where (MainPhone = '' and MobilePhone = '') 

并且这只返回了一条记录,在这种情况下Jill在任一字段中都没有数字。

现在,如果我想列出除MainPhone和MobilePhone上都有空白区的记录以外的所有人,那么WHERE CLAUSE会是什么样子?我尝试了一些变化,但我没有得到正确的结果。

最终结果集应该是这样的

CustName   MainPhone     MobilePhone
Joe        800-111-1234  321-123-1234
Jack                     321-321-1237  
Jimmy      321-123-1234  
James      NULL          432-322-2222  

由于

2 个答案:

答案 0 :(得分:1)

检查此查询

Select *
From mytable
Where (MainPhone != '' AND MainPhone IS NOT NULL) OR (MobilePhone != '' AND MobilePhone IS NOT NULL)

相同的小提琴

http://sqlfiddle.com/#!6/5e668/2

答案 1 :(得分:0)

Select *
From MyTable
Where (ISNULL(MainPhone, '') = '' and ISNULL(MobilePhone, '') = '')