好吧,这可能很简单,但我就是无法理解。
我正在创建一个页面,该页面将查询包含许多列的表,并且大多数项目不是唯一的。我需要能够获取与尽可能多的(最多 4 个)搜索条件匹配的记录列表。
示例:
我是搜索以下项目的用户,我在文本框中输入以下至少一项且最多 4 项: 姓名、年龄、性别、体重(用户可以全部填写,也可以不填写)。
如果他只输入性别“F”,那么他将获得数千名女性的列表,其中包含姓名、年龄、性别和体重。
但是,如果他输入“F”表示性别,输入“300”表示体重,他将得到的返回记录列表要小得多。
我需要能够创建一个 sql 语句来使用该功能执行该搜索。
advTHANKSance
最佳答案
我使用类似于下面的方法来完成您正在尝试的操作:
DECLARE @Gender varchar(1)
DECLARE @Age int
DECLARE @Weight int
DECLARE @Name varchar(64)
SELECT * FROM MyTable
WHERE
(@Gender is null OR Gender = @gender)
AND (@weight is null OR Weight = @weight)
AND (@Age is null OR age = @Age)
and (@Name is null OR Name = @Name)
如果您要创建一个存储过程(我推荐),它将如下所示:
CREATE PROCEDURE SelectRecords
@Gender varchar(1),
@Age int,
@Weight int,
@Name varchar(64)
AS
SELECT * FROM MyTable
WHERE
(@Gender is null OR Gender = @gender)
AND (@weight is null OR Weight = @weight)
AND (@Age is null OR age = @Age)
and (@Name is null OR Name = @Name)
此存储过程的作用是检查您是否为特定参数传递了值。如果您没有,那么它将为空并且条件将为真。如果您 DID,则它不会为 null,并且第二个条件必须评估为 true 才能返回记录。
关于asp.net - SQL Server 条件选择语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285523/