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写一个通用的查询语句(两个传入值都为空的时候查询全部,有传入值就查询传入值)应该怎么写,谢谢! 展开
值分别为 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写一个通用的查询语句(两个传入值都为空的时候查询全部,有传入值就查询传入值)应该怎么写,谢谢! 展开
1个回答
展开全部
// 尝试下面这个:
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询