我写的一个例子。
DELIMITER $$DROP PROCEDURE IF EXISTS `ipy`.`sp_message_multi_search`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_message_multi_search`(IN var_seq_condition varchar(1),
 IN var_f_date_condition varchar(1),IN var_e_date_condition varchar(1),
 IN var_seq int(11),IN var_f_date date,IN var_e_date date)
BEGIN
  SET @stmt = "SELECT * FROM ipy_message WHERE 1 = 1";
  SET @op = "'";
  SET @a = CONCAT(" AND seq_number ",var_seq_condition," ");
  SET @b = CONCAT(" AND from_date ",var_f_date_condition," ");
  SET @c = CONCAT(" AND end_date ",var_e_date_condition," ");
  IF IFNULL(NULL,LENGTH(var_seq)) != 'NULL' && STRCMP(var_seq,'0') != 0 THEN
    SET @stmt = CONCAT(@stmt,@a,var_seq);
  END IF;
  IF IFNULL(NULL,LENGTH(var_f_date)) != 'NULL' && STRCMP(var_f_date,'0000-00-00') != 0 THEN
    SET @stmt = CONCAT(@stmt,@b,@op,var_f_date,@op);
  END IF;
  IF IFNULL(NULL,LENGTH(var_e_date)) != 'NULL' && STRCMP(var_e_date,'0000-00-00') != 0 THEN
    SET @stmt = CONCAT(@stmt,@c,@op,var_e_date,@op);
  END IF;
  PREPARE s1 FROM @stmt;
  EXECUTE s1;
  DEALLOCATE PREPARE s1;
  IF FOUND_ROWS() != 0 THEN
    SET @error_code = 0;
  ELSE
    SET @error_code = 1;
  END IF; 
  SELECT @error_code;
END$$DELIMITER ;

解决方案 »

  1.   

    可能是我没有说明白:页面上就一个输入框,一个按钮,在输入框里输入的条件可以用逗号分开,就象是GOOGLE 一样,就一个输入框,输入条件时是这样:110,北京 .这样条件就分别是110和北京,但是有可能用户输入的并不是这两个条件,对应的数据库字段也就不一样了,我是想知道这样的查询如何做。 还有我是用ASP写程序