Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对两个不同值的单个Select SQL语句_Sql_Sql Server - Fatal编程技术网

针对两个不同值的单个Select SQL语句

针对两个不同值的单个Select SQL语句,sql,sql-server,Sql,Sql Server,我有一个SQL Server表,其中有一列名为Category。在我的用户界面中,我有一个类别的下拉列表。用户可以选择一个类别并单击搜索按钮以按类别筛选结果。在下拉列表中,第一个选项为空。意味着如果用户希望查看所有类别中的所有记录,他可以选择空白 在我的SQL Select中,我有两条语句用于此操作 IF @Catg IS NULL Begin Select * From Table End Else Begin Select * From Table

我有一个SQL Server表,其中有一列名为
Category
。在我的用户界面中,我有一个类别的下拉列表。用户可以选择一个类别并单击
搜索
按钮以按类别筛选结果。在下拉列表中,第一个选项为空。意味着如果用户希望查看所有类别中的所有记录,他可以选择空白

在我的SQL Select中,我有两条语句用于此操作

IF @Catg IS NULL
Begin
    Select * 
    From Table
End
Else
Begin
    Select * 
    From Table 
    Where Catg = @Catg
End

表中的
Catg
列将具有空值或类别。这可以在单个SQL语句中实现吗?

您可以使用
语句将子句连接在一起:

Select * 
From Table
Where Catg = @Catg OR @Catg IS NULL
怎么样

SELECT *
FROM yourtable
WHERE (Catg = @Catg) OR (Catg IS NULL)

可能是
ISNULL
解决您的问题这将检查值是否为
NULL
然后
'
否则您的

select * from tblName
where ISNULL(Catg , '')= ISNULL(@Catg, ISNULL(Catg , ''))

除了下面的答案,请在业余时间阅读以下内容:我发布了一个答案,这可能对您有帮助。我无法使用此答案,如果有合适的类别,则我无法显示空值。我认为您缺少一个
@
,而此代码片段可以解决问题,确实有助于提高您的帖子质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您代码建议的原因。谢谢您的回答。我不能使用这个,好像有一个适当的类别,然后我无法显示空值。我正在寻找类似于case语句的内容,可以在where子句中使用。@user2561997您尝试过使用它吗?它不会显示空值。假设我的表中有4条记录,Catg属性中的值是:A、B、C和空。因此,当用户在UI上选择A时,我将只显示1条记录,当用户选择空白时,我将显示4条记录,而这段代码片段可能会解决这个问题,这确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。