2011-09-18 73 views
3

如何在我的查詢中刪除NULL單元格,因爲即使CompanyName不存在,也會顯示一些記錄?如何刪除具有NULL值的列?

SELECT ClientID, CompanyName, FirstName, LastName, Street, City 
    FROM Client 
    WHERE CompanyName LIKE '%G%' Or FirstName LIKE '%J%' OR LastName LIKE '%J%' 
    OR Street LIKE '%J%' OR City LIKE '%J%' Or ContactNo LIKE '%0%' 
    AND ClientTypeID = 2 
+0

做什麼? – Mat

+0

是的!因爲有些記錄沒有公司名稱 – TheOxblood

回答

6

要排除所有行公司名稱爲空,則需要添加

AND CompanyName is NOT NULL 

WHERE後您的最後一個OR條件

+0

非常感謝! :)我在我的客戶搜索文本框 – TheOxblood

+0

+1上使用此命令來提醒應該有括號。 AND先於OR,所以它們絕對應該用括號包圍(如果不僅僅是爲了便於閱讀)。 –

1

天真之後,你可能需要括號,只需使用

SELECT ClientID, CompanyName, FirstName, LastName, Street, City 
FROM Client 
WHERE CompanyName is not NULL and (CompanyName LIKE '%G%' Or FirstName LIKE '%J%' Or LastName LIKE '%J%' Or Street LIKE '%J%' Or City LIKE '%J%' Or ContactNo LIKE '%0%' 
AND ClientTypeID = 2) 
+0

非常感謝! :)我在我的客戶搜索TextBox上使用這個命令 – TheOxblood

0

CompanyName like '%G'

將會失敗,如果CompanyNamenull,不是嗎?

如果您的數據庫不行爲這種方式,只需添加

AND CompanyName IS NOT NULL

+0

非常感謝! :)我在我的客戶搜索文本框中使用這個命令 – TheOxblood

0
SELECT ClientID, CompanyName, FirstName, LastName, Street, City 
FROM Client 
WHERE (CompanyName LIKE '%G%' Or FirstName LIKE '%J%' Or LastName LIKE '%J%' Or Street LIKE '%J%' Or City LIKE '%J%' Or ContactNo LIKE '%0%' AND ClientTypeID = 2) AND CompanyName IS NOT NULL; 

的問題是,你有或聲明。即使公司名稱不適合行姓可能適合。因爲您在過濾結果中使用或將會包括在內。

而你是混合或是,並且都沒有任何括號。你不應該那樣做。你應該eighter寫:

SELECT ClientID, CompanyName, FirstName, LastName, Street, City 
FROM Client 
WHERE (CompanyName LIKE '%G%' Or FirstName LIKE '%J%' Or LastName LIKE '%J%' Or Street LIKE '%J%' Or City LIKE '%J%' Or ContactNo LIKE '%0%') AND ClientTypeID = 2; 

SELECT ClientID, CompanyName, FirstName, LastName, Street, City 
FROM Client 
WHERE CompanyName LIKE '%G%' Or FirstName LIKE '%J%' Or LastName LIKE '%J%' Or Street LIKE '%J%' Or City LIKE '%J%' Or (ContactNo LIKE '%0%' AND ClientTypeID = 2); 
0

刪除所有空的所有列要排除所有行`CompanyName`爲空

declare @ex as nvarchar(max) = '' 
declare @_null as nvarchar(max) 
set @_null = '' 

select @_null += 'isnull(' + QUOTENAME(column_name) + ',0) as ' + QUOTENAME(column_name) + ',' 

from sample.INFORMATION_SCHEMA.columns where TABLE_NAME = 'table'; 

set @_null = left(@_null,len(@_null) - 1); 

set @ex = 'select ' + @_null + ' from table'; 

exec sp_executesql @ex; 
相關問題