需求:SELECT length('佑佳A诗尚BCDEFG您好'); 返回25
因为一个汉字是 3个长度 ,一个英文是1个长度。我想通过一句SQL语句 从左第一位截取 长度为不大于10的 字符串 也就是获取 '佑A佳诗'可以不~~!?朱超宁波mysqlj2ee 程序员

解决方案 »

  1.   

    set names 'gbk';然后再试。
      

  2.   

    mysql> SELECT substring('佑佳A诗尚BCDEFG您好',1,10);
    +---------------------------------------------+
    | substring('佑佳A诗尚BCDEFG您好',1,10) |
    +---------------------------------------------+
    | 佑佳A诗                                  |
    +---------------------------------------------+
      

  3.   

    SET NAMES LATIN1;
    SELECT SUBSTRING('佑佳A诗尚BCDEFG您好',1,10) ORDELIMITER $$
    DROP PROCEDURE IF EXISTS EE$$
    CREATE PROCEDURE EE()
    BEGIN
    SET NAMES LATIN1;
    SELECT SUBSTRING('佑佳A诗尚BCDEFG您好',1,10) INTO OUTFILE 'R:/TEMP/123.TXT';
    END$$
    DELIMITER ;
      

  4.   

    --设置字符集
    set names lantin1
    --截取字符
    select substring('佑佳A诗尚BCDEFG您好',1,10) 
      

  5.   

    MySQL 5.0以上的版本: 
    1.一个汉字占多少长度与编码有关: 
    UTF-8:一个汉字=3个字节 
    GBK:一个汉字=2个字节 
    2.varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别 
    3.MySQL检查长度,可用SQL语言: 
    select LENGTH(fieldname) from tablename 来查看
    varchar(2) 里面的2指的是字符数。不是字节数。1个字符占几个字节就取决于编码类型。