asp.net - SQL Server 条件选择语句

标签 asp.net sql-server

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

我正在创建一个页面,该页面将查询包含许多列的表,并且大多数项目不是唯一的。我需要能够获取与尽可能多的(最多 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/

相关文章:

c# - "BeginSession"方法未被调用或未成功 - QBFC SDK12 和 ASP.NET 网站

c# - 如何在 ASP.net 页面中设置面包屑

c# - 使用空格反序列化 JSON 响应 C# 类

php - 如何从sql查询中获取数值

sql-server - SSIS - ANSI 平面文件始终保存为 UTF-8(无 BOM)

Asp.net ajax+ Jquery : EndRequestHandler(sender, 参数)

javascript - 如何从 javascript (ajax) 调用 Web 服务

asp.net - LinkBut​​ton CommandName和CommandArgument

sql - 从字符串中删除空格并选择在 sql server 中使用该字符串

sql - 计算两列的差异并将结果输出到另一列