13

以下は私のコードです:

     DELIMITER $$

     CREATE DEFINER=`root`@`localhost` PROCEDURE `employee_with_asset`(IN name     VARCHAR(250))
     BEGIN
     SELECT a.Asset_code,a.name as name1,a.type,a.description,`purchase date`,
    `amc availability`,`amc renewal`,`employee Id`,b.Name FROM `asset_details` a,
     employee b WHERE  b.Name LIKE '%' + @name + '%' and a.`assigned to`=b.`employee Id`;
     END

LIKE付近でエラーを表示しています。それを解決する方法。

4

3 に答える 3

40

mysql での連結は、次を使用して行われますCONCAT()

LIKE CONCAT('%', @name , '%')

全文

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `employee_with_asset`
(
    IN _name     VARCHAR(250)
)
BEGIN
    SELECT  a.Asset_code,
            a.name as name1,
            a.type,
            a.description,
            `purchase date`,
            `amc availability`,
            `amc renewal`,
            `employee Id`,
            b.Name 
    FROM    `asset_details` a
            INNER JOIN employee b 
                ON a.`assigned to` = b.`employee Id`
    WHERE   b.Name LIKE CONCAT('%', _name , '%');
END $$
DELIMITER ;
于 2013-04-09T07:57:04.103 に答える
3

John Woo の答えは正しいですが、utf8_general_ci コレクションを使用しない場合は、このように比較する列のコレクションと同じように、WHERE 句の後 (複数の条件がある場合は各条件の後) にコレクションをキャストする必要があります。

... WHERE name LIKE CONCAT('%', @name , '%') COLLATE utf8_unicode_ci

または複数の条件

... WHERE name LIKE CONCAT('%', @name , '%') COLLATE utf8_unicode_ci
OR job LIKE CONCAT('%', @name , '%') COLLATE utf8_unicode_ci ...
于 2016-05-26T08:00:31.897 に答える