给定以下代表可能列表的字符串,我如何获取指定索引处的项目n
1,2,3,4,5
word1 word2 word3
pipe|delimited|list
此功能的可能原因是
- 从 GROUP_CONCAT 输出中提取特定元素
- 从 SET 列输出中提取特定元素(当转换为字符串时)
- 从包含逗号分隔列表的标准化不良的表中提取特定元素
- 在迭代过程中使用来循环列表并对其中的每个元素执行操作
没有用于此目的的本机函数。您可以使用两个 SUBSTRING_INDEX 函数。并且您需要检查该特定索引项是否存在:
SET @string:='1,2,3,4,5';
SET @delimiter:=',';
SET @n:=6;
SELECT
CASE WHEN
CHAR_LENGTH(@string)-CHAR_LENGTH(REPLACE(@string, @delimiter, ''))>=
@n*CHAR_LENGTH(@delimiter)-1
THEN
SUBSTRING_INDEX(SUBSTRING_INDEX(@string, @delimiter, @n), @delimiter, -1)
END;
-
SUBSTRING_INDEX(@string, @delimiter, @n)
返回字符串中的子字符串@string
before @n
的出现次数@delimiter
.
-
SUBSTRING_INDEX( ... , @delimiter, -1)
返回最后分隔符右侧的所有内容
- 你需要检查是否有分隔符
@n
存在。我们可以减去带有分隔符的字符串的长度,以及删除分隔符的字符串 - 使用REPLACE(@string, @delimiter, '')
- 看看它是否大于@n*CHAR_LENGTH(@delimiter)-1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)