本文主要和大家介绍一个sql语句的写法,实现功能是先精确查询,如果有记录就直接显示,没有记录就执行模糊查询。
有一张user表。里面有个name字段,传值是@name。
要求根据@name查询,如果有值就显示。
select * from user where name=@name
如果没值 就进行模糊匹配:
select * from user where name like '%'+@name+'%'
如果通过一条sql语句实现先精确再模糊查询的功能。我们通过case when可以达到目的。
with table1 as ( select 'a' [name] union all select 'bac' [name] union all select 'b' [name] ) select * from table1 where [name] like case when (select COUNT(*) from table1 where [name]='a') >0 then 'a' else '%a%' end
声明:如需转载,请注明来源于www.webym.net并保留原文链接:http://www.webym.net/jiaocheng/1043.html