2011-09-18 76 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; 
相关问题