当输入变量不为空时,我想使用where
。
例如,当@custid
不为null时,请创建此查询:
Select *
from customers
where custid = @custid
当@custid
为null时,请改用此查询:
Select *
from customers
我该怎么做?
我在谷歌搜索,但没有找到任何类似的答案。感谢
答案 0 :(得分:4)
您可以使用以下查询:
Select *
from customers
where @custid IS NULL OR custid=@custid
在这种情况下,如果您的变量为空,则仅评估条件@custid IS NULL
,并且您获得与Select * from customers
相同的查询
如果您的变量不为null,则条件@custid IS NULL
为false,您的查询与Select * from customers where custid=@custid
相同
答案 1 :(得分:0)
我使用SqlBuilder类并提供以编程方式附加WHERE子句的过滤器。
所以SqlBuilder类看起来像这样:
public class Program
{
public static void Main()
{
Console.WriteLine(SqlBuilder.GetSql(null));
Console.WriteLine(SqlBuilder.GetSql("CUSTOMER_ID"));
}
public class SqlBuilder{
private static string _baseSql = "select * from customers";
public static string GetSql(string customerId){
var final = _baseSql;
if(customerId != null)
final += " WHERE custId=@custId";
return final;
}
}
}
这也可以通过使用参数和枚举来实现。