我有6个下拉列表,2个文本框和一个按钮在我的asp.net网页表单应用程序的搜索页面。点击按钮后,我需要将过滤的数据选择到中继器组件。我可以在用户使用SQL Select Command在所有下拉列表中选择一些值时执行此操作。使用下拉列表筛选从数据库中选择
SELECT * FROM Profiles WHERE (Sport = @Sport, Region = @Region, Name LIKE @Name,...)
但是,当用户留下了一些下拉列表或文本框为空SQL命令不显示任何内容。有谁可以帮助我,如何解决这个问题?
编辑: 我修改了查询,但它仍然不起作用。
SELECT Profiles.ProfileId,Profiles.ProPicUrl, Profiles.Name, Profiles.Specialization, UsersSports.Rating " + _
"FROM Profiles " + _
"JOIN UsersSports ON Profiles.ProfileId = UsersSports.ProfileId " + _
"WHERE (UsersSports.SportId = CASE WHEN @SportId != '' THEN @Sport ELSE UsersSports.SportId END) AND (Region = CASE WHEN @Region != '' THEN @Region ELSE Region END) AND (Specialization = CASE WHEN @Specialization != '' THEN @Specialization ELSE Specialization END)" + _
"AND (Sex = CASE WHEN @Sex != '' THEN @Sex ELSE Sex END) AND ((@AgeFrom IS NOT NULL AND @AgeTo IS NOT NULL AND Age BETWEEN @AgeFrom AND @AgeTo) OR (@AgeFrom IS NULL AND @AgeTo IS NULL AND Age)) " + _
"AND ((@PractiseFrom IS NOT NULL AND @PractiseTo IS NOT NULL AND Practise BETWEEN @PractiseFrom AND @PractiseTo) OR (@PractiseFrom IS NULL AND @PractiseTo IS NULL AND Practise))" + _
"AND ((@Name IS NOT NULL AND Name LIKE '%@Name%') OR (@Name IS NULL AND Name)) AND ((@City IS NOT NULL AND City LIKE '%@City%') OR (@City IS NULL AND City))" + _
"ORDER BY UsersSports.Rating ASC
另外'LIKE'应该像''%@ Name%''一样使用,否则它就像'='一样工作。 – user2989408