SQL Server 条件选择语句

evi*_*ack 2 sql-server asp.net

好吧,这可能很容易,但我就是无法理解。

我正在创建一个页面,它将查询一个包含许多列的表,并且大多数项目都不是唯一的。我需要能够获得尽可能多的(最多 4 个)搜索条件匹配的记录列表。

例子:

我是搜索以下项目的用户,我在文本框中输入了以下项目中的至少一项和最多 4 项:姓名、年龄、性别、体重(用户可能会也可能不会全部填写)。

如果他只是输入“F”作为性别,那么他会得到一个包含数千名女性的名单,包括她们的姓名、年龄、性别和体重。

但是,如果他为性别输入“F”,为体重输入“300”,他将得到一个小得多的返回记录列表。

我需要能够创建一个可以使用该功能执行该搜索的 sql 语句。

advTHANKSance

Abe*_*ler 5

我已经使用类似于下面的方法来执行您正在尝试的操作:

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)
Run Code Online (Sandbox Code Playgroud)

如果您要创建一个存储过程(我建议这样做),它看起来像这样:

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)
Run Code Online (Sandbox Code Playgroud)

这个存储过程所做的是检查您是否为特定参数传递了一个值。如果你没有,那么它将为空并且条件为真。如果你 DID 那么它不会为 null 并且第二个条件必须评估为 true 才能返回记录。