日期:2014-05-18  浏览次数:20528 次

一个组合查询的问题
想做这样的一个存储过程:
有一个表people:

name sex age
------------------
jack male 23
hemi male 22
lily female 23

我想通过组合查询得到期望的结果。
查询条件就是输入@name、@sex 、@age三个参数,某个或多个字段可能为空。
虽然很简单,不过我想了解一下细节上的处理。(回答最好能在机器上测试通过)
先谢谢了!


------解决方案--------------------
最近经常有人问这类问题。
无论参数传空串''或null值,都可以

SQL code
CREATE PROC myPROC
(
@name VARCHAR(20),
@sex VARCHAR(10),
@age INT
)
AS
    SELECT * FROM people
        WHERE name = ISNULL( NULLIF(@name,'') ,name)
            AND sex = ISNULL( NULLIF(@sex,'') ,sex)
            AND age = ISNULL( NULLIF(@age,0) ,age)