例如,如果我们有一个包含逗号分隔值的字符串
'a,b,c,d'
,并且我们想要获取第一个逗号之前的值,我们可以这样做:
SELECT SUBSTRING_INDEX('a,b,c,d', ',', 1); -- 返回 'a'
DELIMITER $$
CREATE FUNCTION `SPLIT_STR`(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS varchar(255) CHARSET latin1
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
END$$
DELIMITER ;
使用这个函数,你可以像这样分割字符串:
SELECT SPLIT_STR('a,b,c,d', ',', 2); -- 返回 'b'