Asp.net T-SQL搜索结果或/和条件
我正在建立一个系统,用户可以在论坛中按性别、年龄、语言、用户兴趣搜索用户 我得到了这个存储过程:Asp.net T-SQL搜索结果或/和条件,asp.net,tsql,Asp.net,Tsql,我正在建立一个系统,用户可以在论坛中按性别、年龄、语言、用户兴趣搜索用户 我得到了这个存储过程: ALTER PROCEDURE dbo.FindFriends ( @language int, @country nvarchar(50), @sex int, @ageFrom int, @ageTo int, @category nvarchar(50) ) AS SELECT u.*, cat.* FROM [
ALTER PROCEDURE dbo.FindFriends
(
@language int,
@country nvarchar(50),
@sex int,
@ageFrom int,
@ageTo int,
@category nvarchar(50)
)
AS
SELECT u.*, cat.*
FROM [User] AS u
INNER JOIN categories AS cat ON u.user_id=cat.user_id
WHERE (age_presenentation BETWEEN @ageFrom AND @ageTo) AND lingo=@language AND sex=@sex AND cat.category_name=@category
这句话正是我想要的。但有时,用户可能无法输入某些字段。例如,用户可能只按类别搜索用户。。这将导致没有用户出现,因为我使用的是“And”操作符。是否有一种方法可以组合逻辑,以便在任何sql变量(例如@category、@angeTo)为空时,语句将不包含它们 这取决于你所说的“空”是什么意思。如果您的意思是NULL,请尝试以下方法:
WHERE age_presenentation BETWEEN @ageFrom AND @ageTo
AND (lingo=@language OR @language IS NULL)
AND (sex=@sex OR @sex IS NULL)
AND (cat.category_name=@category OR @category IS NULL)
这取决于你所说的“空”是什么意思。如果您的意思是NULL,请尝试以下方法:
WHERE age_presenentation BETWEEN @ageFrom AND @ageTo
AND (lingo=@language OR @language IS NULL)
AND (sex=@sex OR @sex IS NULL)
AND (cat.category_name=@category OR @category IS NULL)
我已经遇到过很多次了 尝试:
但这可能是太多的记录了。我已经多次遇到过这种情况 尝试:
但这可能是太多的记录。我认为您的解决方案应该是satsifactory。我还没想过那件事。。无论如何,我可以将变量设置为null..通过asp.net编程..谢谢首先检查是否为null是最好的做法。我认为您的解决方案应该是satsifactory。我还没想过那件事。。无论如何,我可以将变量设置为null..使用asp.net编程..谢谢首先检查是否为null是最佳做法。您有一个小错误..这是变量语言不是行话..在第二行..很好的解决方案您有一个小错误..这是变量语言不是行话..在第二行..很好的解决方案