Mysql存储过程搜索

时间:2013-12-03 02:16:27

标签: mysql sql stored-procedures

我试图创建一个存储过程,它将通过匹配名字和姓氏来搜索users表,但是只有当我只搜索姓氏时才能使用它。谁能明白为什么

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `SearchUserByName`(
IN in_first_name VARCHAR(100),
IN in_last_name VARCHAR(100)
)
BEGIN
SELECT *
FROM `users`
WHERE in_first_name AND in_last_name = first_name AND last_name;
END

2 个答案:

答案 0 :(得分:1)

这是一个非常奇怪的where子句......

将其更改为:

WHERE ((in_first_name = '') or (first_name = in_first_name))
AND ((in_last_name = '') or (last_name = in_last_name))

如果为第一个或最后一个名称传递空白,则忽略该部分的该部分。这允许您通过第一个或最后一个或两个搜索。

答案 1 :(得分:0)

要查找last_name列与提供的参数值匹配的行,并且first_name列与供应商参数值匹配...

将WHERE子句更改为以下内容:

  FROM `users`
 WHERE first_name = in_first_name 
   AND last_name  = in_last_name