Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Sql Server Ignorer la recherche sur un champ si le paramètre est nul

C'est une question courante et redondante. Vous pouvez utiliser ci-dessous :ajouter "OU @paramètre est nul" à tous vos critères

Select tblQuickRegister.memberId , tblUserLogin.lastLogin , tblQuickRegister.dob,tblPhysicalAttributes.height,
 tblHomeTruth.religion, tblEducation.highestQualification , tblOccupation.occupation, tblPicture.profilePic1
 from tblQuickRegister full outer join tblUserLogin on tblQuickRegister.memberId = tblUserLogin.memberId
 full outer join tblPhysicalAttributes on tblQuickRegister.memberId = tblPhysicalAttributes.memberId
 full outer join tblHomeTruth on tblQuickRegister.memberId = tblHomeTruth.memberId
 full outer join tblEducation on tblQuickRegister.memberId = tblEducation.memberId 
 full outer join tblOccupation on  tblQuickRegister.memberId = tblOccupation.memberId 
 full outer join tblPicture on tblQuickRegister.memberId = tblPicture.memberId 
 full outer join tblMaritalStatus on tblQuickRegister.memberId = tblMaritalStatus.memberId 
 full outer join tblContact on tblQuickRegister.memberId = tblContact.memberId 
 where
 (tblQuickRegister.sex = @sex or @sex is null)
 And (tblMaritalStatus.maritalStatus = @maritalStatus or @maritalStatus is null)
 And ((DATEDIFF(DAY,Convert(date,tblQuickRegister.dob),getdate())/365 >= @minage) or @minage is null)
 And ((DATEDIFF(DAY,Convert(date,tblQuickRegister.dob),getdate())/365 <= @maxage) or @maxage is null)
 And (tblContact.[state] = @state or @state is null)
 And (tblContact.city = @city or @city is null)