一个表中有很多的字段,在页面上每个字段都对应一个文本框,现在想写一个存储过程,根据用户输入来查询,根据用户输入的那些文件框做条件来查询,不输入的就不用加在where条件中,有什么办法来解决这个问题呢?
比如说表中的字段为:id,name,instruction,date,product,Number,FSN,depart
现在需要这些字段中一些字段的组合来查询,而且对于一些字段,比如说instruction字段还要是模糊查询,请哪个高手给个存储过程或例子!!!

解决方案 »

  1.   

    String Sqlstr;
    Sqlstr='select * from tablename where 1=1 ';
    if(txtid.text<>'')
    {
    Sqlstr+=' and id='''+txtid.text+'''';
    }
    ...
    if(txtinstruction.text<>'')
    {
    Sqlstr+=' and instruction like ''%'+txtinstruction.text+'%''';
    }
    ...
      

  2.   

    CREATE PROC p_test 
    @instruction VARCHAR(100)
    AS
    SELECT id,name,instruction,date,product,Number,FSN,depart
    FROM tb 
    WHERE instruction LIKE '%'+ISNULL(@instruction,'')+'%'
    GO
      

  3.   

    CREATE PROC p_test 
    @name VARCHAR(20)=NULL,
    @instruction VARCHAR(100)=NULL,
    @date DATETIME=NULL,
    @product VARCHAR(100)=NULL,
    @Number VARCHAR(50)=NULL,
    @FSN VARCHAR(20)=NULL,
    @depart VARCHAR(20)=NULL
    AS
    SELECT id,name,instruction,date,product,Number,FSN,depart
    FROM tb 
    WHERE instruction LIKE '%'+ISNULL(@instruction,'')+'%'
    AND name=ISNULL(@name,name)
    AND date=ISNULL(@date,date)
    AND product=ISNULL(@product,product)
    AND Number=ISNULL(@Number,Number)
    AND FSN=ISNULL(@FSN,FSN)
    AND depart=ISNULL(@depart,depart)
    GO