Mysql 通过传递参数并使用';比如';查询

Mysql 通过传递参数并使用';比如';查询,mysql,sql,search,stored-procedures,Mysql,Sql,Search,Stored Procedures,我正在尝试创建一个存储过程,该过程将使用用户在调用SP时传递的参数来搜索我的表。我希望使用“like”查询来完成此操作。到目前为止,这是我得到的 DROP PROCEDURE IF EXISTS `SEARCH_STUDENT`$$ CREATE PROCEDURE `test`.`SEARCH_STUDENT`(_textInput VARCHAR(10)) BEGIN SELECT * FROM records WHERE `lastname` LIKE '%'+_

我正在尝试创建一个存储过程,该过程将使用用户在调用SP时传递的参数来搜索我的表。我希望使用“like”查询来完成此操作。到目前为止,这是我得到的

DROP PROCEDURE IF EXISTS `SEARCH_STUDENT`$$
CREATE
    PROCEDURE `test`.`SEARCH_STUDENT`(_textInput VARCHAR(10))
    BEGIN

    SELECT * FROM records WHERE `lastname` LIKE '%'+_textInput+'%';
    END$$
但我有一个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@Search varchar(10);
    SET @Search=_textInput;
    SELECT * FROM records WHERE `last' at line 10

我从谷歌得到的是带有固定字符串的样本,需要搜索。我的取决于用户在文本框中输入的内容。非常感谢您在advanced中提供的帮助。

我现在就知道了。感谢这个链接

sql CONCAT函数就是答案。下面是我的代码:

CREATE
    PROCEDURE `test`.`SEARCH_STUDENT`(_textInput VARCHAR(10))
    BEGIN

    -- sELECT * FROM records WHERE `lastname` LIKE '%' + _textInput;
    SELECT * FROM records WHERE `lastname` LIKE CONCAT('%',_textInput,'%');

    END$$
投入

\`test\`.\`SEARCH_STUDENT\`(in _textInput VARCHAR(10))

另一个wise out将不会正确显示

,因为存储过程是一个语句SP,所以您可以舍弃
BEGIN…END
块,而无需更改
分隔符
\`test\`.\`SEARCH_STUDENT\`(in _textInput VARCHAR(10))