如何编写SQL查询的 WHERE子句,如果变量具有值,则使用该值,如果变量为空,则表明它不在那里。
像这样:
一般查询:
Select * from table1 where color = $colorFilter and size = $sizeFilter
如果$ colorFilter有一个值: $ colorFilter =" blue" ,那么查询应如前所述执行。但如果$ colorFilter为空: $ colorFilter ="" 我不想考虑该条款:
Select * from table1 where size = $sizeFilter
如何以通用方式编写?这似乎是一个非常直截了当的问题,但似乎无法得到它。谢谢!
答案 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