【问题标题】:SQL how many records start with the same letterSQL有多少条记录以相同的字母开头
【发布时间】:2012-11-10 03:21:02
【问题描述】:

所以我在数据库的 A 列中有数千条记录。

我想看看有多少以字母表中的每个字母和所有单个数字开头。

所以我需要一个计数和与之关联的字母。我还想查看所有两个字母数字组合,即 aa ab ac ad ae 等及其计数。

还有三个和四个字符等。

【问题讨论】:

标签: sql sql-server


【解决方案1】:

您通常可以GROUP BYLEFT(columnname, 1) 这样的表达式,它允许您执行由任意表达式分组的COUNT() 聚合。要使用的最理想的子字符串函数可能取决于您的 RDBMS。

SELECT
  UPPER(LEFT(columnname, 1)) AS first_char,
  COUNT(*)
FROM yourtable
GROUP BY UPPER(LEFT(columnname, 1))
ORDER BY first_char ASC

同样,要获得 2 个字符匹配

SELECT
  UPPER(LEFT(columnname, 2)) AS first_2char,
  COUNT(*)
FROM yourtable
GROUP BY UPPER(LEFT(columnname, 2))
ORDER BY first_2char ASC

某些 RDBMS 将允许您在 GROUP BY 中使用列别名,而不是完整表达式,如简化的 GROUP BY first_char

请注意,我已将它们大写,因此如果您使用区分大小写的排序规则,您不会得到 Ab, AB, ab, aB 的单独匹配项。 (不过,我相信 SQL Server 默认使用大小写不区分排序规则)

【讨论】:

  • 太棒了。这正是我所需要的
  • 可能值得注意的是,只有在源使用区分大小写的排序规则时才需要 UPPER...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 2013-05-29
  • 1970-01-01
相关资源
最近更新 更多