3

我正在尝试创建一个存储过程,它将使用用户在调用 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

我从谷歌得到的是要搜索的固定字符串的样本。我的取决于用户将在文本框中输入的内容。非常感谢您在高级方面的任何帮助。

4

2 回答 2

7

我现在明白了。感谢这个链接。

http://www.sitepoint.com/forums/showthread.php?620319-MySQL-Stored-Procedure-LIKE-and-a-string-variable-the-combination-don-t-work

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$$
于 2013-06-16T01:49:09.073 回答
1
CREATE PROCEDURE `test`.`SEARCH_STUDENT`(in _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))

其他明智的将无法正确显示

于 2016-11-22T07:27:23.173 回答