2014-09-30 70 views
0

所以我有這張表爲主要和移動電話的客戶。我有一個有效的數字或一個空格或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條記錄,我想過濾掉Main和Mobile上都有空白的CustNames。所以,我會先檢查,看看有多少已經和使用該WHERE子句:

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

和是的,這隻有一個返回的記錄,在這種情況下,吉爾擁有在任何領域的任何數字。

現在,如果我想列出除了在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 

感謝

+0

您的意思是? 'Where'(MainPhone!=''and MobilePhone!='')' – Ric 2014-09-30 16:01:41

+1

你的意思是'Where(MainPhone!=''或MobilePhone!='')'簡單地反過來第一個查詢:'Where NOT(MainPhone = ''和MobilePhone ='')'並應用De Morgan。 – njzk2 2014-09-30 16:07:29

+0

您將varchar「EmptySpace」添加爲數據庫中的值? – Jenn 2014-09-30 16:09:17

回答

1

入住此查詢

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

搗鼓相同

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

+0

我正在離開主空間和移動設備上的IS NULL部分,從而刪除了良好的記錄......感謝您指出這一點:-) – SQLnbe 2014-10-07 02:12:40

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