0

我正在使用以下用户定义的 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.

但我得到的是空值。请给任何建议

4

1 回答 1

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

于 2013-08-14T10:20:30.133 回答