新建存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `queryEname`(IN strname CHAR)
BEGIN
     select * from physprop where  Ename like concat('%',ucase(strname),'%');
END调用结果不论怎样输入都是emptyset
而且警告内容是: Data truncated for column 'strname' at row 1而直接在命令行里输入select * from physprop where Ename like '%tr%';
ok,没有问题另外,中文读写都不成问题的
之前写过这个存储过程,没事,后来重建了数据库,就不行了,这是怎么回事呢
网上又有说和字符集有关,所以把参数贴下来了
-----+
| character_set_client     | gbk
     |
| character_set_connection | gbk
     |
| character_set_database   | utf8
     |
| character_set_filesystem | binary
     |
| character_set_results    | gbk
     |
| character_set_server     | utf8
     |
| character_set_system     | utf8
     |

解决方案 »

  1.   

    (IN strname CHAR) 
    等同于
    (IN strname CHAR(1)) 
    就一个字节。改成 (IN strname CHAR(30)) 
      

  2.   


    赞同! 或者改成varchar(30)
      

  3.   

    按照两位说的改了,还是不行注意,是中文可以,英文不行
    在命令行里直接select没问题,用存储过程不行我觉得可能还是字符集的问题!
      

  4.   

    按照两位说的改了,还是不行注意,是中文可以,英文不行
    在命令行里直接select没问题,用存储过程不行我觉得可能还是字符集的问题!
      

  5.   

    我把表字段编码从UTF-8改为GBK,好像没问题了。