sql查询以避免空值参数

时间:2010-08-16 13:25:32

标签: c# sql tsql

这些是我传递给某些方法的变量,我需要编写一些像

这样的SQL查询
string cmd = @"select *
from students_tbl
where
     course_id=@courseId and branch_id=in(+" branchId "+)
and passout_year>=@passoutYear
and current_backlog>=@currentBacklog
and gender=@gender
and eGap<=@eGap
and first_year_percent>=@firstyearPercent
and second_year_percent>=@seconYearPercent
and third_year_percent>=@thirdyearPercent";

依此类推,但问题是这些参数中很少有参数是这些变量的可选方法 值为null所以我不想在查询中包含这些参数 那么我应该如何消除那些空变量我不知道如何编写查询来解决这个问题

这些参数是随机的,当它们为null时无需修复,因为它们是可选的 那么我应该如何仅使用非空参数

来编写查询

3 个答案:

答案 0 :(得分:1)

您可以在条件中测试空值,并使用表中的值。例如:

... where course_id = isnull(@courseId, course_id) ...

答案 1 :(得分:1)

在比较之前添加is null检查,如果输入参数值为null,则会短路,例如:

where (@currentBacklog is null or current_backlog >= @currentBacklog)

答案 2 :(得分:0)

而不是

cmd = "one long string with many clauses, some of which are optional"

cmd = "first clause, required"
if second param is not null then
   cmd = cmd & "second clause, optional"