SPLIT_STR 不适用于外语 [英] SPLIT_STR not working with the foreign languages
问题描述
I got the function SPLIT_STR
from blog.fedecarg.com
这是代码
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
If I change that index to 3
SELECT SPLIT_STR('accountName;โอมTEST;No.454646;i;2013-8-23', ';' , 3) as 'RES';
期望值为No.454646
结果是
_________________
| RES |
| ------------- |
| 4646 |
_________________
函数 SPLIT_STR
有问题吗?
注意:如果你删掉外语(โอม
).问题就解决了.
NOTE : If you cut the foreign languages(โอม
) out. The problem will solved.
如何使用外语很好地使用此功能,请帮助.
How can I use this function by working well with the foreign languages, please help.
谢谢.
推荐答案
LENGTH
返回以字节为单位的字符串长度;您的外语字符可能是 2 或 3 个字节的 UTF 序列.尝试用 LENGTH>CHAR_LENGHT
,在函数定义中返回以字符为单位的字符串长度.
LENGTH
returns the string length in bytes; your foreign language characters are probably 2 or 3 bytes UTF sequences.
Try to replace LENGTH
with CHAR_LENGHT
, which returns the length of the string measured in characters, in the function definition.
SQLfiddle:http://sqlfiddle.com/#!2/1bb2d/1
这篇关于SPLIT_STR 不适用于外语的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!