在我的项目中,我在下面的存储过程中编写了一个SQL查询。
select
HostID, HostUniqueID,
(RegFirstName+' '+ RegLastName) as RegistrantName,
(CoRegFirstName+' '+ CoRegLastName) as CoRegistrantName,
EventType,
convert(varchar, EventDate, 101) as EventDate,
Emailid
from
tbl_HostDtls
where
Del_sw = 'N'
and RegFirstName like'%'+ @Hostfirstname +'%'
and RegLastName like '%'+ @hostlastname +'%'
or CoRegFirstName like'%'+ @Hostfirstname +'%'
and CoRegLastName like '%'+ @Hostfirstname +'%'
我在上述查询中发送了两个参数:@Hostfirstname
,@hostlastname
。
查询中Del_sw='N'
表示不删除记录。
如果用户想要根据注册表的名字和姓氏获取数据,那么用户可以完美地获取未删除的数据。
其他用户希望根据co_registry
名字和姓氏获取数据“和”条件不起作用,这意味着此查询也会抓取已删除的记录(不考虑Del_sw='N
'条件)
注意:删除的记录也存储在我的数据库中。
答案 0 :(得分:1)
正确使用括号将您的条件封装在WHERE子句
中where Del_sw='N' and ( (RegFirstName like'%'+ @Hostfirstname +'%' and RegLastName like '%'+ @hostlastname +'%' ) or (CoRegFirstName like'%'+ @Hostfirstname +'%' and CoRegLastName like '%'+ @Hostfirstname +'%') )
由于您只想从未删除的记录中搜索,因此在指定未删除的记录条件后,在单对括号中捕获其余条件。
答案 1 :(得分:1)
Select HostID,
HostUniqueID,
(RegFirstName+' '+ RegLastName) as RegistrantName,
(CoRegFirstName+' '+CoRegLastName) as CoRegistrantName,
EventType,
convert(varchar,EventDate,101) as EventDate,
Emailid
from tbl_HostDtls
where Del_sw='N' and
((RegFirstName like'%'+ @Hostfirstname +'%'
and RegLastName like '%'+ @hostlastname +'%')
or (CoRegFirstName like'%'+ @Hostfirstname +'%'
and CoRegLastName like '%'+ @Hostfirstname +'%'))