SQL Where子句条件if变量是否为空

时间:2017-02-15 12:24:37

标签: sql

如何编写SQL查询的 WHERE子句,如果变量具有值,则使用该值,如果变量为空,则表明它不在那里。

像这样:

一般查询:

Select * from table1 where color = $colorFilter and size = $sizeFilter

如果$ colorFilter有一个值: $ colorFilter =" blue" ,那么查询应如前所述执行。但如果$ colorFilter为空: $ colorFilter ="" 我不想考虑该条款:

Select * from table1 where size = $sizeFilter

如何以通用方式编写?这似乎是一个非常直截了当的问题,但似乎无法得到它。谢谢!

3 个答案:

答案 0 :(得分:0)

从table1中选择*其中($ colorFilter =""或$ colorFilter =' white')和($ sizeFilter =""或$ sizeFilter = '介质&#39)

答案 1 :(得分:0)

您可以将IFNULL用于MYSQL,如果该值为null,则返回第二个参数。

Select * from table1 where color = IFNULL($colorFilter,color) and size = IFNULL($sizeFilter,size)

将IFNULL更改为ISNULL以进行MS访问和SQL服务器,将NVL更改为oracle

答案 2 :(得分:0)

   declare @ccmd nvarchar(max)
   declare @colorFilter nvarchar(max)
   declare @sizeFilter nvarchar(max)
   set @ccmd='Select * from table1 where ' 
   if ltrim(rtrim(@colorFilter))='blue' 
     set @ccmd = @ccmd + ' color ='+ @colorFilter +' AND size ='+ @sizeFilter +''
  if ltrim(rtrim(@colorFilter))='' 
     set @ccmd = @ccmd + ' size='+ @sizeFilter +''
   EXECUTE sp_executesql @ccmd