SPLIT_STR 不适用于外语 [英] SPLIT_STR not working with the foreign languages

查看:32
本文介绍了SPLIT_STR 不适用于外语的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从 blog.fedecarg.com

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆