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 に答える