想做这样的一个存储过程:
有一个表people:name   sex    age
------------------
jack   male   23
hemi   male   22
lily   female 23我想通过组合查询得到期望的结果。
查询条件就是输入@name、@sex 、@age三个参数,某个或多个字段可能为空。
虽然很简单,不过我想了解一下细节上的处理。(回答最好能在机器上测试通过)
先谢谢了!

解决方案 »

  1.   

    最近经常有人问这类问题。
    无论参数传空串''或null值,都可以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)
      

  2.   

    为null
    直接用
    isnull就行了sex=isnull(@sex,sex)
      

  3.   

    ISNULL( NULLIF(@name,'') ,name)