如何拆分字符串并通过拆分令牌对它们进行分组? 我想得到分组分裂的令牌每次计数。
我有一个varchar列,它存储一个可以用','分割的字符串。 下面是列的行数据。 (列名是LogData)
[LogData]
1,2,3,4
1,3,1,9
2,1,3
6,2
然后我想显示(选择)如下所示。
[token] [count]
1 : 4
2 : 3
3 : 3
4 : 1
6 : 1
9 : 1
如果可能的话,我可以通过一些解释得到答案吗? (我不擅长db)
答案 0 :(得分:0)
使用和修改undefined_variable的注释,正确的查询如下所示:
SELECT value,COUNT(*) FROM
(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t0.logdata, ',', n.n), ',', -1) value
FROM t0 CROSS JOIN
(
SELECT a.N + b.N * 10 + 1 n
FROM
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY n
) n
WHERE n.n <= 1 + (LENGTH(t0.logdata) - LENGTH(REPLACE(t0.logdata, ',', '')))
ORDER BY value) nt0 GROUP BY value