sqlserver中where判断是否执行in

我现在有这样的问题,declare @ id,select * user where id in (@id),当id为空或者为“”时不执行in,
搜索全部,应该怎么写这个语句,求解答,感谢!!

declare @ id,select * user where id in (@id) and not exist (select 1 from user where id is null or id='')

if判断@id,然后将where语句定义在一个变量,判断@id是否为空或者为“”,如果是的话就执行 select * from user,否则的话就执行select * from user +@sql

declare @id int
 declare sqlstr nvarchar(max)=N''
 select sqlstr=N'select * from  user where 1=1 '
 if @id<>''
 begin
 select sqlstr=sqlstr+N' and id in ('+@id+N')'
 end

 exec (sqlstr)