REATE DEFINER=`root`@`localhost` PROCEDURE `pro_UpdateUserInfor`(in _UserID int,                /*用户ID*/      in _userExp VARCHAR(100), /*引以为豪的职业经历*/
 in _userEva VARCHAR(100), /*自我评价*/
 
   in _userAddress VARCHAR(50)  /*地址*/
 
BEGINDECLARE real_num  int; /*受影响的行数*/
 
DECLARE real_sql VARCHAR(500);/*lk_users_real 表更改语句 变量*/
 
DECLARE real_length int;
 
DECLARE real_swicth int;
 
SET real_sql="UPDATE lk_users_real SET ";/*lk_users_real 表更改语句*/
 
SET real_length = LENGTH(real_sql);
 IF _userAddress!="" THEN
SET real_sql= CONCAT(real_sql," userAddress='",_userAddress,"',");
END IF;
IF _userZipCode!="" THEN
SET real_sql= CONCAT(real_sql," userZipCode='",_userZipCode,"',");
END IF;IF LENGTH(optional_sql)>optional_length THEN
 
SET optional_sql= LEFT(optional_sql,LENGTH(optional_sql)-1);/*删除最后一个 逗号*/
SET optional_sql= CONCAT(optional_sql," WHERE UserID=",_UserID);
SET @sql1 = optional_sql;
Select  optional_sql; /*查询出来 最后回加一个逗号, 数字或 英文字母  没有 如果是中文就会有。*/
END IF;

解决方案 »

  1.   

    取最后1个字符,判断是否是0-9,A-Za-z,即可
      

  2.   

    先在已经不少判断了。在分割、截取?
    我想知道它为啥是汉字 就自动给我加个 逗号。  我给一个参数 如果是 a  
    执行 SET real_sql= CONCAT(real_sql," userZipCode='",_userZipCode,"',");
    拼接好就是   userZipCode='a',   后面我有个删除逗号的一个操作。
    如果是汉字的话 这个逗号也删走了。 但是它会给我加上一个。  why????
      

  3.   

    你用什么字符集?设置为UTF8 OR GBK
    show variables like 'char%';
      

  4.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  5.   

    字符集问题show variables like 'char%';
    贴结果