SqlServer存储过程中用where case when无法查出有字段为空的全部数据

一张表T中有两个字段tel,address值分别为110,gz;119,null;存储过程中如果用语句:select*fromTwheretellikecasewhen@... 一张表T中有两个字段tel,address
值分别为 110,gz;
119,null;
存储过程中如果用语句:
select * from T where tel like case when @tel is null then tel esle '%'+@tel+'%' and
address case when @address is null then address else '%'+@address+'%'

只能查询出address不为空的那条记录,请问如果想不用动态sql写一个通用的查询语句(两个传入值都为空的时候查询全部,有传入值就查询传入值)应该怎么写,谢谢!
展开
 我来答
仙戈雅3n
2015-03-11 · TA获得超过5791个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:916万
展开全部
// 尝试下面这个:
if len(@tel)=0 and len(@address)=0
 begin
  select * from T
 end
else 
  begin
    if len(@tel)=0
 begin
   select * from T where address like '%'+@address+'%'
 end
 
 if len(@address)=0
  begin
   select * from T where tel like '%'+@tel+'%'
  end
 
 if len(@tel)<>0 and len(@address)<>0
   begin
    select * from T where tel like '%'+@tel+'%' and address like '%'+@address+'%'
   end
  end
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式