在字符串和Count中查找数字字符串

时间:2013-12-13 18:42:54

标签: java mysql sql count

我有一张像this这样的表格。在像这样的字符串01-10-33中,我想知道在我的表格中出现了多少次。例如01号我想检查它是否在第一行,计数并检查第二行,第三行...... EOF并获得计数。在示例链接中,我尝试检查数字是否在字符串中但没有成功。我知道我可能会得到我的所有数字并在java中执行此操作,但是可以使用sql获取此数据吗?

示例中的预期结果为

numbers-count
01 - 1
02 - 2
03 - 2
05 - 1
10 - 2
12 - 1

2 个答案:

答案 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;

sqlfiddle demo

答案 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;