我如何编写SQL的WHERE子句,如果一个变量有一个值,它使用该值,如果该变量是空的,就好像它不在那里一样。
如下所示:
一般查询:
Select * from table1 where color = $colorFilter and size = $sizeFilter如果$colorFilter有一个值:$colorFilter = "blue",那么查询应该像前面声明的那样执行。但如果$colorFilter为空白:$colorFilter = "",则不考虑该子句:
Select * from table1 where size = $sizeFilter我怎么才能用通用的方式来写呢?这似乎是一个非常直截了当的问题,但似乎无法理解。谢谢!
发布于 2017-02-15 12:26:31
从table1其中选择* ($colorFilter =“或$colorFilter = 'white')和($sizeFilter = "”或$sizeFilter = 'medium')
发布于 2017-02-15 12:35:58
对于MYSQL,您可以使用IFNULL,如果值为null,它将返回第二个参数。
Select * from table1 where color = IFNULL($colorFilter,color) and size = IFNULL($sizeFilter,size)
将IFNULL改为ISNULL,用于MS access和SQL server,将NVL更改为oracle
发布于 2017-02-15 12:49:27
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
https://stackoverflow.com/questions/42249344
复制相似问题