我正在使用以下用户定义的 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.
但我得到的是空值。有什么建议请提出来
最佳答案
尝试
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
关于如果列值中不存在分隔符,Mysql split_str 函数将返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228757/