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>
谢谢大家的指点,我反复看了整个procedure,觉得这里有点写错了,搞不清楚原来的人是怎么写的。不过,也学到了一下东西,包括那个GBK汉字2字节,我记得也是两个字节,但是在GUI tools里执行就是3个,估计是建库时DEFAULT CHARACTER SET GBK没执行吧?!一会儿就结贴了,再次感谢大家~
+--------------------------------+
| SUBSTRING('Quadratically',5,6) |
+--------------------------------+
| ratica |
+--------------------------------+
1 row in set (0.06 sec)mysql>
12.3. 字符串函数
http://dev.mysql.com/doc/refman/5.1/zh/functions.html#string-functions
SELECT substring('公司',1,lengthb('公')-1);
-->公
和
SELECT substrb('公司',1,lengthb('公')-1);
这个就不是了吧
SELECT substring('公司',1,lengthb('公')-1);
-->公
和
SELECT substrb('公司',1,lengthb('公')-1);
这个就不是了吧我刚才点错了...
恩,谢谢,只前没听说过这个。
但是这东西好使么,如果都是单字节字符话,直接用substring就好了,字符集定义为GBK,MySQL里汉字为3个字节(?)还是没什么用吧...
我晕了...
SUBSTRING以及SUBSTR是按照字符长度来取的,并非字节!!
+------+
| 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>
你想实现什么功能呢??? 如果你想实现按字符取自然就用substring 就行了,如果按你的标题来按字节即,就用 unhex(substring(hex.
实在看不出你想实现什么功能.GBK汉字2字节. UTF8汉字三字节.