我有一个用逗号分隔的字符串,例如
1,2,3,4,5
或
1,2,3,4,5,5,8
或1,2,2,6,6,7,8
我想要在第三逗号和最后一个逗号之间的任何内容,而忽略最后一个元素。
1,2,3,4,5
的结果应为4
。
1,2,3,4,5,5,8
的结果应为4,5,5
。
1,2,2,6,6,7,8
的结果应为6,6,7
。
我尝试了以下方法。但是当第三个值与第一个或第二个值相同时,它将失败。
SUBSTRING( LEFT(string, LENGTH(string)
- LOCATE(',', REVERSE(string)))
, LOCATE(SUBSTRING_INDEX(SUBSTRING_INDEX(string, ',', 3), string ))
答案 0 :(得分:2)
嗯。要摆脱最后一个元素:
select substr(string, 1, length(string) - substring_index(string, ',', -1) - 1)
然后摆脱前三个:
select substr(substr(string, 1, length(string) - substring_index(string, ',', -1) - 1),
substring_index(string, ',', 3) + 1
)
答案 1 :(得分:0)
最后,这就是我要解决的问题。欢迎发表评论。
select SUBSTRING(@String,length(SUBSTRING_INDEX(@String,',',3))+2,
(length(@String) - length(SUBSTRING_INDEX(@String,',',-1))-length(SUBSTRING_INDEX(@String,',',3)) -2));