我有一张像this这样的表格。在像这样的字符串01-10-33
中,我想知道在我的表格中出现了多少次。例如01号我想检查它是否在第一行,计数并检查第二行,第三行...... EOF并获得计数。在示例链接中,我尝试检查数字是否在字符串中但没有成功。我知道我可能会得到我的所有数字并在java中执行此操作,但是可以使用sql获取此数据吗?
示例中的预期结果为
numbers-count
01 - 1
02 - 2
03 - 2
05 - 1
10 - 2
12 - 1
答案 0 :(得分:2)
如果数字始终采用该格式,您可以使用SUBSTRING获取所有部分并计算它们:
select number, count(*)
from (
select substring(n, 1, 2) as number
from l
union all
select substring(n, 4, 2)
from l
union all
select substring(n, 7, 2)
from l
) a
group by number;
答案 1 :(得分:0)
如果您想知道字符串“01
”中出现“01-10-33
”的次数,您可以使用:
select l.*,
(length(n) - length(replace(n, @n, '')))/length(@n)
from l cross join
(select @n := '01') const;
请注意,这不会处理分隔符。因此,'01'
将匹配'001'
。如果这个要求很重要:
select l.*,
(length(n)+2 - length(replace(concat('-', n, '-'), @n, '')))/length(@n)
from l cross join
(select @n := '-01-') const;