evi*_*ack 2 sql-server asp.net
好吧,这可能很容易,但我就是无法理解。
我正在创建一个页面,它将查询一个包含许多列的表,并且大多数项目都不是唯一的。我需要能够获得尽可能多的(最多 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)
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 才能返回记录。
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |