SPLIT_STR不使用外语

时间:2013-08-07 09:29:31

标签: mysql

我从blog.fedecarg.com

获得了SPLIT_STR函数

这是代码

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

如果我尝试选择

SELECT SPLIT_STR('accountName;โอมTEST;No.454646;i;2013-8-23', ';' , 2) as 'RES';

结果是

_________________
|      RES      |
| ------------- |
|    โอมTEST    |
_________________

如果我将该索引更改为3

SELECT SPLIT_STR('accountName;โอมTEST;No.454646;i;2013-8-23', ';' , 3) as 'RES';

预期值为No.454646

但结果是

_________________
|      RES      |
| ------------- |
|      4646     |
_________________

函数SPLIT_STR是否有错误?

注意:如果您删除外语(โอม)。问题将解决。

如何通过与外语合作来使用此功能,请帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

LENGTH以字节为单位返回字符串长度;您的外语字符可能是2或3个字节的UTF序列。 尝试将LENGTH替换为CHAR_LENGHT,它返回函数定义中以字符为单位的字符串长度。

SQLfiddle:http://sqlfiddle.com/#!2/1bb2d/1