本人纯属初学MySQL,现想把一个Oracle上的存储过程改到MySQL上,但是其中有一个substrb的字符串按位返回值函数不知道应该怎么做了?希望各位前辈们指点小弟我一下,不胜感激阿~~~例aaa := 'dsadsa';
  bbb := substrb(aaa,0,lengthb(aaa));

解决方案 »

  1.   

    mysql> select SUBSTRING('Quadratically',5,6);
    +--------------------------------+
    | SUBSTRING('Quadratically',5,6) |
    +--------------------------------+
    | ratica                         |
    +--------------------------------+
    1 row in set (0.06 sec)mysql>
      

  2.   

    楼主可以参考一下用户手册
    12.3. 字符串函数
    http://dev.mysql.com/doc/refman/5.1/zh/functions.html#string-functions
      

  3.   

    这个substrb和substring可以一样使么?
    SELECT substring('公司',1,lengthb('公')-1);
    -->公

    SELECT substrb('公司',1,lengthb('公')-1);
    这个就不是了吧
      

  4.   

    这个substrb和substring可以一样使么? 
    SELECT substring('公司',1,lengthb('公')-1); 
    -->公 
    和 
    SELECT substrb('公司',1,lengthb('公')-1); 
    这个就不是了吧我刚才点错了...
      

  5.   

    mysql 中没有对应的 substrb 函数,常规的SUBSTRING() 是取字符的。不过你可以用 hex() 转换后再取SUBSTRING(). 然后再unhexunhex(SUBSTRING(hex(aaa),pos1,pos2)).关于这三个函数,你可以参考一下MYSQL的官方文档。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  6.   


    恩,谢谢,只前没听说过这个。
    但是这东西好使么,如果都是单字节字符话,直接用substring就好了,字符集定义为GBK,MySQL里汉字为3个字节(?)还是没什么用吧...
    我晕了...
      

  7.   

    对不起,MySQL没有按照字节取子字符串的函数!!
    SUBSTRING以及SUBSTR是按照字符长度来取的,并非字节!!
      

  8.   

    mysql里面没有根据字节取的函数,只能根据字符来取:mysql> select substring('aaabbcc',4,2) as a;
    +------+
    | a    |
    +------+
    | bb   |
    +------+
    1 row in set (0.00 sec)mysql> select mid('aaabbcc',4,2) as a;
    +------+
    | a    |
    +------+
    | bb   |
    +------+
    1 row in set (0.00 sec)mysql>
      

  9.   


    你想实现什么功能呢??? 如果你想实现按字符取自然就用substring 就行了,如果按你的标题来按字节即,就用 unhex(substring(hex. 
    实在看不出你想实现什么功能.GBK汉字2字节. UTF8汉字三字节.
      

  10.   

    谢谢大家的指点,我反复看了整个procedure,觉得这里有点写错了,搞不清楚原来的人是怎么写的。不过,也学到了一下东西,包括那个GBK汉字2字节,我记得也是两个字节,但是在GUI tools里执行就是3个,估计是建库时DEFAULT CHARACTER SET GBK没执行吧?!一会儿就结贴了,再次感谢大家~