如果列值中不存在分隔符,则Mysql split_str函数返回空值

时间:2013-08-14 10:04:36

标签: mysql

我正在使用以下用户定义的mysql函数,

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


`select split_str(‘1||john’,'||’,2);` - result "john".

但是如果列值没有分隔符字符串(||)

,则此函数不起作用
select split_str(‘john’,'||’,2); - required result john.

但我的价值空虚。请提出任何建议

1 个答案:

答案 0 :(得分:0)

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN case when CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) = CHAR_LENGTH(x) then x else (REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '')) end;

你可以在这里查看。 http://sqlfiddle.com/#!2/aab54/2