MYSQL无长度拆分字符串?

MYSQL无长度拆分字符串?,mysql,split,Mysql,Split,我有一个表字段,可以包含一个或多个字符串值。有时它只包含一个值,有时包含两个、三个、四个或五个值,等等 这些价值观​​由逗号分隔。如何在MYSQL中进行拆分操作 例如: 1. 1,2,3,4,5, 2. 1,2,3,4, 3. 1,2,3, 4. 1 5. 1,2,3,4,5,6,7,8, 此函数需要包含长度信息的整数值: CREATE FUNCTION SPLIT_STR( x VARCHAR(255), delim VARCHAR(12), pos INT ) RETURNS VARCHA

我有一个表字段,可以包含一个或多个字符串值。有时它只包含一个值,有时包含两个、三个、四个或五个值,等等

这些价值观​​由逗号分隔。如何在MYSQL中进行拆分操作

例如:

1. 1,2,3,4,5,
2. 1,2,3,4,
3. 1,2,3,
4. 1
5. 1,2,3,4,5,6,7,8,
此函数需要包含长度信息的整数值:

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, "");

当您对单独的值感兴趣时,存储逗号分隔的值是一个非常糟糕的主意。如果您想从字符串中获取单行,您可以使用SQL中的递归查询,从MySQL版本8.0开始就可以使用。请参阅这里如何在MySQL中编写标记化函数:这些信息对我来说已经足够了。