【问题标题】:Anyway to group counts in MSSQL rows-columns which have similar names. For eg. Cisco, Cisco Systems & Cisco Systems Inc.?无论如何,对具有相似名称的 MSSQL 行列中的计数进行分组。例如。思科、思科系统和思科系统公司?
【发布时间】:2012-07-27 20:46:04
【问题描述】:

我正在尝试按网络上的 MAC 供应商前缀对设备进行计数。我从数据库中返回的查询结果有计数,但供应商的名称略有不同,如 Cisco、Cisco Systems 和 Cisco Systems Inc.。无论如何要添加所有这些并将它们表示为 Cisco 吗?

我将在网络前端显示这些信息。我正在使用 PHP 从这个数据库中检索数据。

思科只是这里的一个例子。它可以是具有不同名称长度的任何其他 MAC 供应商。

【问题讨论】:

  • 我们是否可以假设您已经有一个函数可以决定什么使名称“相似”,问题是您是否可以在 GROUP BY 中使用它?
  • @octern - 不,这就是问题所在。我需要找到一种方法来决定如何确定哪些名称相似。但是函数的方式似乎很合适。

标签: php html sql-server tsql group-by


【解决方案1】:
select substring(caseID,1,5), count(*) 
from docSVsys 
group by substring(caseID,1,5)

【讨论】:

  • 子字符串从位置 1 开始。所以,我认为您的意思是子字符串 (caseID,1,5)。
  • 实际上这行不通,因为思科只是一个例子。它可以是具有不同长度的任何其他 MAC 供应商名称。
  • 它们是用空格隔开的吗?可以substring(caseID, 1, CHARINDEX(' ', caseID))吗?
  • 我喜欢@TedSpence 这个想法,但是要处理没有空格的字符串,它应该是substring(caseID, 1, ISNULL(NULLIF(CHARINDEX(' ',caseID),0),LEN(CaseID)))
  • 其实这个比较简单:substring(caseID, 1, CHARINDEX(' ',caseID+' ')-1)
猜你喜欢
  • 2022-06-24
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多