Mysql函数拆分csv?

Mysql函数拆分csv?,mysql,sql,Mysql,Sql,我正在尝试创建一个mysql函数,该函数可以拆分csv行并提取特定索引处的值: RETURN substring_index( substring_index(csv, ';', pos), ';', -1) 这通常适用于: SPLIT("my;string", 1) -> returns 'my' SPLIT("my;string", 2) -> returns 'string' 但是:如果pos根本不存在,如何返回空值 SPLIT("my

我正在尝试创建一个
mysql
函数,该函数可以拆分csv行并提取特定索引处的值:

RETURN
    substring_index(
        substring_index(csv, ';', pos),
    ';', -1)

这通常适用于:

SPLIT("my;string", 1) -> returns 'my' 
SPLIT("my;string", 2) -> returns 'string' 
但是:如果
pos
根本不存在,如何返回空值

SPLIT("my", 5) -> returns 'my', but should return ''

我有一个功能,它似乎工作

RETURN 
CASE WHEN REPLACE(SUBSTRING(SUBSTRING_INDEX(inputStr, delim, pos), LENGTH(SUBSTRING_INDEX(inputStr, delim, pos -1)) + 1), delim, '') = inputStr 
THEN '' 
ELSE REPLACE(SUBSTRING(SUBSTRING_INDEX(inputStr, delim, pos), LENGTH(SUBSTRING_INDEX(inputStr, delim, pos -1)) + 1), delim, '')
END;

我的结论如下。但是,如果有人知道一个函数,而不必在csv字符串上运行
REPLACE
,我仍然非常感谢您的回复

RETURN
CASE WHEN LENGTH(csv) - LENGTH(REPLACE(csv, ';', '')) + 1 >= pos
THEN substring_index(substring_index(csv, ';', pos), ';', -1)
ELSE ''
END