我有一张水果桌(香蕉,苹果,梨)和我的查询:
SELECT name,id FROM fruits WHERE name LIKE ('%ban%');
请注意,查询包含禁止小写。 name列设置为utf8_collation_ci,所以当我运行select时,我得到了我的香蕉。如果我在存储过程中放入相同的查询,我将无法得到它。
我甚至尝试将COLLATE utf8_unicode_ci添加到存储过程中的查询中,但我没有再次获取我的香蕉。为什么?我应该将所有内容设置为Upper()并重新转换表中的所有值吗?
我正在使用mysql。
编辑:这就是HeidiSql编写SP的方式
CREATE DEFINER=`root`@`localhost`
PROCEDURE `getFruits`(IN `inValue` VARCHAR(50))
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT 'get fruits'
BEGIN
SELECT name,id FROM fruits WHERE valid=1 AND name LIKE
CONCAT('%',inValue,'%') COLLATE utf8_unicode_ci LIMIT 100 ;
END