【发布时间】:2016-04-07 07:00:27
【问题描述】:
我试图在 MYSQL 的分隔符之间获取每个不同的字符串值。我尝试使用函数 SUBSTRING_INDEX,它适用于第一个字符串和第一个字符串的延续,但不适用于第二个字符串。这就是我的意思:
Table x The result
SELECT SUBSTRING_INDEX(path, ':', 2) as p, sum(count) as N From x Group by p UNION
SELECT SUBSTRING_INDEX(path, ':', 3) as p, sum(count) From x Group by p UNION
SELECT SUBSTRING_INDEX(path, ':', 4) as p, sum(count) From x Group by p UNION
SELECT SUBSTRING_INDEX(path, ':', 5) as p, sum(count) From x Group by p UNION
SELECT SUBSTRING_INDEX(path, ':', 6) as p, sum(count) From x Group by p;
我尝试在查询中添加SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(path, ':', 2), ':', 2) as p, sum(count) From x Group by p UNION
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(path, ':', 4), ':', 2) as p, sum(count) From x Group by p,但结果还是一样。我想要做的不仅是获得字符串 A1、A2、A3 组合的结果,还获得带有 B2、C2、D2 的字符串作为第一个提取的字符串,如下表所示:
+---------------+----+
| p | N |
+---------------+----+
| :A1 | 4 |
| ... | ...|
| :B1 | 3 |
| :B1:C2 | 2 |
|... | ...|
+---------------+----+
获得这样的结果的正确函数是什么?任何帮助表示赞赏,谢谢。
【问题讨论】:
-
没有以 :B1 开头的路径,你能澄清一下这个输出吗
-
@RyanVincent 会检查它。
-
@RichardSt-Cyr 不,我不是这个意思。
-
@amdixon 是的,没有以 B1 开头的路径。但我想要输出变化。例如路径 :A1:B2:C3:D4:G5 -> :A1, :A1:B2, .., :B2, B2:C3 等