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
是否有错误?
注意:如果您删除外语(โอม
)。问题将解决。
如何通过与外语合作来使用此功能,请帮助。
感谢。
答案 0 :(得分:1)
LENGTH
以字节为单位返回字符串长度;您的外语字符可能是2或3个字节的UTF序列。
尝试将LENGTH
替换为CHAR_LENGHT
,它返回函数定义中以字符为单位的字符串长度。
SQLfiddle:http://sqlfiddle.com/#!2/1bb2d/1