sql查询问题,如果一个条件为空,则默认查找全部,该怎么写sql?

如题所述

select * from tb
where col1=? or nvl(?,'null')='null'

?问输入条件
nvl是ORACLE函数 其他的数据库不知道有没有类似的
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-26
大致是这样:

where ? is null or supplier in(?)

不过一般in不行。

where ? is null or supplier = ?追问

这种方法不行...

追答

你试试不就知道了。

第2个回答  2012-12-26
可以用isnull来判断
如select * from table where col1 = isnull(@col1,col1)追问

我语句是这样写的
WHERE supplier in(?),?号就是参数,我需要的是如果?为空的时候,默认查找全部

追答

你用的是哪种数据库?

追问

oracle数据库

追答

那将isnull换成nvl

第3个回答  2012-12-26
declare @sql varchar(100) ,@a varchar(10)
set @sql='select * from table where 1=1'
if @a is not null
begin
set @sql=@sql +'col1=@a'
end
相似回答