2

我正在尝试创建一个 sql server 查询选择。我有一个参数可以为空或不为空。当@value 为空时,我想返回所有具有空值的 mycolumns。如果值不为空,我想返回具有该值的 mycolumns。

如何最好地处理这个问题,我试过:

SELECT name FROM mytable
WHERE  coalesce( @value,mycolumn)=mycolumn

我感觉它在于对空值的处理。我该如何解决?

4

4 回答 4

2
SELECT T.name
FROM dbo.mytable T
WHERE
   EXISTS (
      SELECT @value INTERSECT SELECT T.mycolumn
   )
;
于 2013-05-28T18:21:13.710 回答
2
where myColumn = @value or
      (myColumn is null and @value is null)
于 2013-05-28T05:45:29.317 回答
0

第一种情况。当你传递一个城市名称时..

DECLARE @SearchType varchar(80); SET @SearchType = 'Alamo'; Select * From Homes where City = @SearchType OR Coalesce(@SearchType,'') = ''

第二种情况。城市为空或为空。

SET @SearchType = '';

在第一种情况下,您将按城市名称获得结果。在第二种情况下,您将获得所有结果。

于 2014-11-13T21:54:04.230 回答
-1

尝试:

SELECT name FROM mytable where myColumn = @value or @value is null
于 2013-05-28T06:29:54.287 回答