0

我正在尝试构建一个带有一些输入参数的查询。有几点需要注意...

  1. 并非所有参数都需要传递给查询。
  2. 如果一个参数不被传递给查询,它是否仍然必须传递,但是NULL
  3. 如果未传递参数,我将如何构建它以不包含参数?

所以说你有...

IN name VARCHAR(30),
IN age VARCHAR(2),
IN address VARCHAR(50)

而且您只想按名称搜索...

SELECT * FROM Table WHERE 
(
NAME LIKE CONCAT(name, '%')
);

这似乎不起作用,因为没有传递年龄。或者如果传递了姓名和地址而不是年龄怎么办?我将如何构建它?

4

3 回答 3

1

问题是可选参数不能在 MYSQL 中使用。

解决方法是为参数传递空值,并在存储过程中使用 IF 语句来处理不同的情况。

看看这里:

在 MySQL 的存储过程中编写可选参数?

于 2013-05-31T15:27:34.417 回答
1

作为先前的发布者状态,为未使用的参数传递 NULL。然后构造您的查询类似于...

SELECT * FROM Table WHERE 
(
  ((nameParameter IS NULL) OR (NameColumn LIKE '%' + NameParameter + '%'))
  AND 
  ((ageParameter IS NULL) OR (AgeColumn = ageParameter))
  AND 
  ((addressParameter IS NULL) OR (AddressColumn = addressParameter))
)
于 2013-05-31T15:34:06.980 回答
0

尝试这个:

SELECT * FROM Table
WHERE name LIKE '%nametofind%';
于 2013-05-31T15:25:43.433 回答