我正在使用以下用户定义的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.
但我的价值空虚。请提出任何建议
答案 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