按类似值分组

时间:2014-05-14 02:22:42

标签: sql sql-server sql-server-2012

SQL server 2012。

我正在将UserAgent捕获到我的数据库中,并且我正在尝试对其运行一些查询。

我想将32位和64位条目放在一起下面是这些在db中显示的内容。

  

Mozilla / 5.0(Windows NT 6.1; rv:26.0)Gecko / 20100101 Firefox / 26.0

     

Mozilla / 5.0(Windows NT 6.1; WOW64; rv:26.0)Gecko / 20100101 Firefox / 26.0

我当前的查询:

Select     count(*) as counts, UA
from        mytable
group by    UA
order by    counts desc

这样做的好方法是什么?我可以在最后的X字符上做一个子字符串吗?我假设这些是不同的条目(这是我期望发生的)

1 个答案:

答案 0 :(得分:1)

假设WOW64;是2个值之间唯一不同的子字符串,您可以在分组之前对字符串使用REPLACE,如下所示:

Select     count(*) as counts, replace(UA,' WOW64;','')
from        mytable
group by    replace(UA,' WOW64;','')
order by    counts desc

然而,正如@GordonLinoff在评论中所说,更好的选择是创建一个引用表,为您认为相似的所有记录赋值,将其与表连接,然后按值列分组。