我有一个表名学生有(studentId,StudentName,Address,PhoneNo)
我为用户提供了一个过滤器,用于从Combobox中仅选择StudentId以获取学生的详细信息...并生成报告.
我写了以下查询来获取学生详细信息:
(select * from Students where StudentId = stdId)
Run Code Online (Sandbox Code Playgroud)
这里stdId是我从代码传递的参数
如果我选择单个studentId,它工作正常....但在用户选择Comobobox我也提供"ALL" 如果用户All从组合框中选择我想显示所有学生的详细信息
那么stdId如果用户选择我应该传递什么All ?
我在C#中使用了内联查询(不使用SQL存储过程)
如果用户选择全部,则传递NULL给@StudentId查询并将其更改为:
select *
from Students
where (StudentId=@StudentId OR @StudentId IS NULL)
Run Code Online (Sandbox Code Playgroud)
你可以这样做.
SELECT * from Students s
WHERE s.studentId = ISNULL(@StudentId,s.studentId)
Run Code Online (Sandbox Code Playgroud)
在组合框中选择"全部"时,在@studentid参数中传递null.如果你不能在参数中传递null然后传递-1或你的combox选项中不能包含的任何东西,并执行如下操作:(如果-1 =全部)
SELECT * from Students s
WHERE s.studentId = @StudentId or @StudentId=-1
Run Code Online (Sandbox Code Playgroud)
您也可以尝试Curt给出的答案.