查询要求:MSSQL数据库,首先完整而准确的查询,如果有记录sql语句模糊查询或者,将直接显示亚博首页登录沙巴app ,如果没有记录,则将进行模糊匹配。如何通过SQL查询语句实现?
有一个用户表。有一个名称字段sql语句模糊查询或者,[受电子邮件保护],完整的查询
select * from user where [email protected]
如果有值,则直接显示,如果没有值,请执行模糊查询
select * from user where name like [email protected]+'%'
实施说明:
方法1
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
方法二
-- 参数 DECLARE @name varchar(20) SET @name = 'x' -- 一条sql搞定 ;WITH /* 测试数据 [user](id,[name]) as ( SELECT 1,'x' UNION ALL SELECT 2,'y' UNION ALL SELECT 3,'xyz' UNION ALL SELECT 4,'zyx' ),*/ a AS ( select *,1 grp from [user] where [email protected] UNION ALL select *,2 grp from [user] where name like [email protected]+'%' ), b AS ( SELECT *, RANK() OVER(ORDER BY grp) rank FROM a ) SELECT id,[name] FROM b WHERE rank = 1
@name ='x'的结果
id name ----------- ---- 1 x
@name ='z'的结果
id name ----------- ---- 3 xyz 4 zyx
我个人认为,第二种方法在先进行准确查询再进行模糊查询方面会更有效。
免责声明:如果您需要转载亚博APP买球首选 ,请注明出处并保留原始链接: